top  Index  Search  Changes  RSS  Login

snap.el

指定ファイルや指定メールへリンクをはる仕掛け


使い方

  1. リンク先で M-x snap-record
  2. リンク元で C-y → 「snap://○○/××」をはりつけ
  3. 「snap://○○/××」上で M-x snap-play → リンク先へジャンプ
  • Wanderlust の Summary バッファ上で M-x snap-record すれば、メールへのリンクになります
  • Help, Bookmark, Man, Info, Emacs-wiki, Navi2ch, w3m, Dired, BBDB, BibTeX, Howm, Shell, Occur, Gnus もサポートされています ([2005-07-03]現在. thx > まさん, ゐさん)
  • それ以外は、ファイルへのリンクになります

バイトコンパイル

snap.el をバイトコンパイルしたらエラーが - 2ch3:20

→ 提供いただいたコードのおかげで今はバイトコンパイル可能に なりました [2007-02-24].

ただし, コンパイル時にない(locate-library が失敗する)機能は無視されます. 例えば, w3m.el が load-path 上に存在しなければ w3m 関連の関数は 定義されません. もし将来 w3m.el をインストールしたら, その後で snap.el を再コンパイルしてください.

なぜ以前はバイトコンパイル不可だったのか

「ま」さんや「ゐ」さんのおかげで, snap.el は色々なメジャーモードに対応しました. 当然, コードはそれらに依存しています.

が, もしそれらを正直にトップレベルで require したら, 「emacs-wiki と navi2ch と wl と w3m と…を すべてインストールしない限り実行できない」という 不便なことになってしまいます.

なので, たとえ依存していても require を書いていませんでした. そのせいで, バイトコンパイル時には (外部で定義された) 関数と マクロの区別がつかず, 不具合が生じました.

ちなみに planner では, ファイルをアプリケーションごとに 分けることでそのへん解決してるのかな?


  • 2004-02-23 (月) 10:46:58 hirose31 : 最近CVS版のwlだとwl-summary-buffer-msgdbが無くてエラーになります。

とりあえずこんなので動きました。

(defun snap-record:wl-summary-mode ()
  (let ((folder wl-summary-buffer-elmo-folder)
        number msgid)
    (setq number (wl-summary-message-number))
    (setq msgid (elmo-message-field folder number 'message-id))
    (snap-encode:wl-summary-mode (elmo-folder-name-internal folder) msgid)))
  • 2004-02-23 (月) 22:23:01 名無しさん : thx. elmo-message-field 使うように直してみました.

  • 2004-03-20 (土) 09:52:57 : 僕も snap と似たようなことを実装していたのですが、 snap を使うようにしましたので、成果物をアップいたします。
  • 2004-04-01 (木) 01:56:41 作者 : thx. snap.el に取り込ませていただいてもよろしいでしょうか? (しかしやっぱり一文字なんですね… ^^;)
  • 2004-04-07 (水) 22:16:09 : はい。ぜひ取り込んでください。面倒なこと抜きに作者さんの著作権のもとで取り込んで結構です。
  • 2004-04-10 (土) 23:43:56 作者 : いただきました。ありがとうございます。>まさん

  • 2004-04-21 (水) 06:05:48 名無しさん : bug 報告: (require 'action-lock) が無い場合、 snap.el v 1.11 はエラーになります。
  • 2004-04-21 (水) 22:09:23 名無しさん : thx. 直し版に入れかえときます. ついでに, 指定行へのジャンプがちょっと柔軟になりました.

  • 2004-08-28 (土) 17:55:14 : もう少し追加しましたのでアップします。よろしければ前回同様とりこんでください。
  • 2004-08-28 (土) 18:03:18 : w3m の冗長性はまぁ、仕方ないようです。ftp,aboutなど全てに対応できないので。navi2ch は http を省いても問題ないのですが。ところで、アイデアなのですが、行ジャンプ、検索ジャンプなどを統一形式にして、 snap:///hoge?g=123?s=higehage のようにするのはどうですか?ちょっと考えたところ、?s=?s などのエスケープが面倒そうなので思考停止です。URL エンコードをまじめにするのもなんだかなという感じなので。
  • 2004-08-28 (土) 18:07:37 : あと、省略記法も考えたいのですが、作者さんはどう思ってます? (setq hoge-alist '(("navi2ch-article-mode" "2cha"))) みたいな感じで。
  • 2004-08-28 (土) 18:56:10 作者 : どっちも良さそうですね. いっそ, snap.el をまさんに引きついでもらうのはどうでしょう? 「丸ごと引きとって自由にしていただく」でも, 「ここ(sf.jp)の CVS に放り込んどいて, comitter になっていただく」でも.
  • 2004-08-28 (土) 20:21:02 名無しさん : 最強環境つっつきかけて気づいたけど, Wanderlust の本文バッファって, wl-geregere-mode じゃなくて mime-view-mode. メジャーモードだけじゃアプリケーション特定しづらいって他にもあるのかなあ
  • 2004-09-11 (土) 14:36:25 名無しさん : 遅くなりましたが、取り込ませていただきました。thx > まさん

  • 2004-11-16 (火) 12:37:34 とおりすがり : Meadow 2.10 + CVS先頭のWL + snapで、snap://wl-summary-mode/+hoge/hage が、 secondの関数がないとか言ってエラーになります。
  • 2004-11-16 (火) 21:45:40 名無しさん : thx. 直してみました.

  • 2005-02-20 (日) 00:42:42 名無しさん : snap.el は, いわば「ある状態への goto リンク」. 逆に「ある状態からの come-from リンク」ってどう? モードその他の状態を見て, それにマッチするメモを表示する. TrapMemo の明示呼び出しと同じか.
  • 2005-02-20 (日) 00:42:51 名無しさん : ネタ元: オリジナルヘルプの作り方

  • 2005-04-12 (火) 18:52:17 名無しさん : Win 環境で fiber.exe 経由 Excel 等を呼べませんか? C-u [RET] あるいは拡張子登録で(既出?)。
  • 2005-04-12 (火) 19:22:13 名無しさん : 2ch2:560-570n

  • 2005-04-15 (金) 17:04:28 名無しさん : どなたかGnusも対応してくださいTT
  • 2005-04-18 (月) 21:49:51 名無しさん : Gnus がわかりそうな人に, snap.el のソース冒頭のコメント「Internal:」あたりを見てもらってください _o_. 実例としては, ソースの最後の方の w3m-mode なんかがわかりやすいと思います.

  • 2004-08-28 (土) 17:55:14 : snap-1.16.develop.el 作りました。 diff に慣れてないので全文乗っけますけど、すいません。やっぱり作者さんの著作の下、取り込んでください。

snap.el.050515 (2005-05-19 00:43:07)

  • 2005-05-19 (木) 00:44:29 名無しさん : 毎度ありがとうございます. まだ全部は読めていませんが, ちょっといじってこんな感じはどうでしょう? → snap.el.050519
  • 2005-05-19 (木) 00:44:38 名無しさん : いちばん変わったのは snap-expand-alist → snap-abbrev で, 仕様も変えてみました. 「snap 文字列の組立/分解には必ず snap-encode/snap-decode を使う」を, 守れる限りは守った方がいいかと思うんですけど, どうでしょう.
  • 2005-05-19 (木) 00:45:05 名無しさん : あと, デフォルト(該当モードなし)のときの「パス#行番号:内容」と fake cgi の「…??g=行番号&s=内容」とが重複気味なので, 統一したい気もしてきます. 前者は goto-line と search と occur を組み合わせたおせっかい機能で, きれいにいかないかもしれませんが…
  • 2005-05-19 (木) 02:16:00 : とりこみどうも。 snap-addrev は異論なしです。 snap-prt はいやでした(プロトコルの意)。ただ occur の部分はどうしようもないので、作りました。出来れば snap-prt 排除の方向でお願いします。あとデフォルトの #110:hoge は僕は数度しか使ってません(ので、仕様変更は問題ない)が、多用されているユーザーもいるかなと思って、手をつけませんでした。書式変更とか統一とかするにしても、あまりいいアイデアはないです。
  • 2005-05-19 (木) 23:10:44 名無しさん : じゃあ, いったん今のままで干しておきます. しばらくしてお互い特に何も思いつかなかったら, http://howm.sourceforge.jp/a/snap.el の方もおきかえて「リリース」しましょう.
  • 2005-05-26 (木) 22:05:44 名無しさん : というわけで, snap.el.050519 からちょっと修正しただけでリリース

  • 2005-05-26 (木) 22:06:06 名無しさん : まだ読めてないけど…
    • planner-snap - planner.el と連携, Eshell サポート, その他改良
    • eev-ttp.el - support for storing hyperlinks targets inside text properties
  • 2005-05-28 (土) 19:35:30 : 上の二つ見て見ました。 planner.el って、最近 snap と似たようなことやってるんですね。 bibtex とか、planner-bibtex.el みれば楽に実装できたのに;;eev は snap の範疇に無いけど、僕も似たようなの emacs-wiki 上で作ってた。まぁ、みんな考えることは同じということで。

  • 2005-06-26 (日) 00:51:40 : Gnus分を作ってみました。リンクがMessage-IDだとimapの時に時間がかかるのでオプションでarticle-numberに切替られるようにしてみてます。snap.el.for-gnus
  • 2005-06-26 (日) 20:53:39 名無しさん : 取り込ませていただいてもよろしいでしょうか?
  • 2005-06-27 (月) 22:14:20 名無しさん : よろしければお願い致します。Messge-IDを欠落させるのはマズいと考えを改めてarticle-numberと一緒に出すように変更しました。まずarticle-numberで探して見つからないorMessage-IDが異なる場合はMessage-IDで検索するようにしてみました。SnapDotElForGnus0627
  • 2005-07-03 (Sun) 03:46:38 Anonymous : 遅くなりましたが, gnus いただきました. ありがとうございます>ゐさん. ついでに, major-mode で判断できないときの対策も追加.

  • 2005-06-26 (日) 20:53:44 名無しさん : っていうか, planner-*.el とまるでかぶってるから, 統合したいですねえ. こんな感じの関数を独立ライブラリとして整備して, planner も snap もこれを下請けに使う, とか.
(setq a (b2a-buffer-to-alist))
a ;; → ((scheme . wl) (folder . "+ME/oreore") (message-id . "…"))
(b2a-alist-to-buffer a) ;; → wanderlust でそのメールを開く
  • 2005-07-03 (Sun) 02:24:56 : ↑X2 つまり、 bookmark-mode の拡張ですね。でも bookmarkたちと planner に比べて拡張性の点で snap は優れてるんですよね。(だから、 snap に流れ着いてきたんですが)
  • 2005-07-03 (Sun) 03:46:18 Anonymous : まだ若くて単純だからいじりやすいって感じですかね :-)

  • 2005-09-27 (火) 12:13:46 : Man-mode (と help, bbdb) では cgi が使えないですね。current-buffer にカーソルが移動していない。特に man の場合、非同期だから、 cgi を実装するなら、それが終わったあとになるのでどうしたらいいか分かりません;;
  • 「snap-play:MODE:g や snap-play:MODE: がもしあれば, snap-play::g じゃなくそっちを呼ぶ」にして, help だけ対応してみました. テスト不足なのでひとまず別名で置いときます. http://howm.sourceforge.jp/a/snap.el.050927
  • で, man はまた別事情なわけですね. process-sentinel に細工しなきゃいかんのか…
  • ところで, snap-play::g とかのオプション引数 snap って, 何者でしたっけ? ^^; 使われてなさそうですけど, 消してもいいですか?
  • 2005-09-28 (水) 02:51:28 : snap-play:MODE:g は頭いいですね。オプション引数 snap は・・・何かあった時のためだったかな?^^消してください。最近、 bookmark の snap 対応をやっていて気づいたんですよね。これ。bookmark はカレントバッファを必ず移して終わるんですけど、 manだとどうしたものかなという感じです。
  • 2005-09-30 (金) 00:02:05 Anonymous : こんなとこですかね > man. BBDB は使ってなくてわからないから, 対策できるまで「cgi は無視」にしときました. http://howm.sourceforge.jp/a/snap.el.050929

;; 新規メモを作成し, 直前に見ていたバッファの snap-record を貼りつけ
(require 'snap)
(defun snap-and-howm-create ()
  (interactive)
  (let ((s (if (buffer-file-name) nil (snap-record-string))))
    (howm-create)
    (save-excursion
      (goto-char (point-max))
      (insert (or s "")))))

  • 2006-01-26 (木) 13:28:46 逃避 : snap にものすごい可能性を感じているのですが、ものにできないでいます(namazu, mew と組み合わせたい)。ところで、ファイルのとき MS-DOS なドライブレターに対応してますでしょうか? c: にある場合だけうまく動いているような気がします。
  • win じゃ使っていないのでなんとも…. とりあえずバージョン一式(emacs, snap)と, 「何をしたら, どうなってほしいのに, どうなった」の具体例を教えてもらえると助かります.
  • 2006-01-27 (金) 10:48:12 逃避 : 失礼しました。snap1.29/howm-1.3.1/Meadow1.15/Emacs20.7.1/Win2kSp4 です。

実験してみたところ、いろいろな状況があるようでした。 snap-play は実は期待通り動くようです。記法を知らなかっただけでした。 驚いたことにリモートファイルにも届きました(事前に Explorer 経由でパス ワード打っておく必要はありますが)。

(1) snap:///d:/foo/bar.c          (ローカルファイル)
(2) snap://dired-mode/d:/Meadow/  (ローカル dired)
(3) snap://///foo/bar.c           (リモートファイル:SMB)
(4) snap:///\\foo/bar.c           (同上)
(5) snap://///foo/bar/            (リモート dired)
(6) snap://dired-mode///foo/bar/  (リモート dired)

ただ、snap-record が必ずしも上記を吐いてくれないということのようです。(buffer-file-name) は期待通りなので、後処理が原因かもしれません。

(1)→ snap:///foo/bar.c (file-rerative-name が消してしまう?)
(3)→ snap:///bar.c (マシン名が消えるのは不思議)

前回書いたのは (1) の record についてだったことになります。

  • こんなのお願いできます? (ア) 下のコードを *scratch* に貼る. (イ) 最後の「)」の後にカーソルを置いて C-x C-e (ウ) C-x C-f で d:/foo/bar.c 等の「うまくいかない例」を開く. (エ) M-x chotto (オ) 結果をメモ (C-y で OK のはず)
(defun chotto ()
  (interactive)
  (let* ((raw-path (buffer-file-name))
         (msg (format "{%s}{%s}[%s][%s][%s]"
                      snap-root-dir
                      (expand-file-name snap-root-dir)
                      raw-path
                      (file-relative-name raw-path snap-root-dir)
                      (abbreviate-file-name raw-path))))
    (message "%s" msg)
    (kill-new msg)))
  • 2006-01-30 (月) 09:35:43 逃避 : 遅くなって恐縮です。
(1)ドライブレターについて:{/}{d:/}[d:/foo/bar.c][foo/bar.c][d:/foo/bar.c]
(2)リモートパスについて: {/}{//foo/bar/}[//foo/bar/baz.txt][baz.txt][//foo/bar/baz.txt]

となりました。expand-file-name って器用なんですね。

  • thx. なるほど. win では「/」が「相対パス」なんですかね? (default-directory しだいで意味が変わる)
  • じゃあ snap.el のソースをこう変更したら直るでしょうか?
   修正前 (defvar snap-root-dir "/")
   ↓
   修正後 (defvar snap-root-dir (expand-file-name "/"))
  • 2006-01-31 (火) 08:52:27 逃避 : バッチリです!ありがとうございます。ソースいじらず、暫定で setq しただけですが。(いずれにしろ、的外れな解決方法を模索していました orz)
  • 修正したものにさしかえておきました. ご指摘 thx

  • 2006-03-23 (木) 23:25:49 20 : snap-bibtex に bug らしきものがあったので、「動けばいいや」的 patch です。ご検討下さい。
@L830
-  bibtex-reference-head eob t)
+  bibtex-entry-head eob t)
@L835
-  (let ((f (snap-record:))
+  (let ((f (buffer-file-name))
  • 2006-03-24 (金) 00:34:51 20 : もしやと思い emacs の ChangeLog を見てみたら、古いバージョンだと bibtex-reference-head なんですね。けど、変更があったのは 2000-2-15 となっております。最近のバージョンだと修正が必要ということで。
  • thx. どないでしょう? > まさん
  • 修正してみたのを http://howm.sourceforge.jp/a/snap.el.060325 に置いときます.

  • 2006-04-09 (日) 23:19:07 taku : 教えてください。環境変数を入れるにはどうすればいいのでしょうか。snap://${HOME2}/path/to/a みたいに設定できないでしょうか。
  • 環境変数を展開するようにとりあえず直してみました. http://howm.sourceforge.jp/a/snap.el.060411
  • 2006-04-16 (日) 17:09:11 taku : ありがとうございます! snap-recordで、含まれるパス名を環境変数に置き換えてくれると便利なんですが。
  • 動機は AttachableTimer のときと同じ(パスの異なる複数のマシンで同期して…)ですよね多分. unix ならシンボリックリンクで適当に対処できそう. win だとできないんでしょうか?
  • 2006-04-19 (水) 20:34:56 taku : うーん、それが出来ればいいんですが。Cygwinでも試したのですが、やはりMeadow3では認識できませんでした。
  • これの冒頭コメントにある snap-abbreviate-environment-variables をお試しください. http://howm.sourceforge.jp/a/snap.el.060423
  • 2006-04-26 (水) 10:44:49 taku : なるほど、ありがとうございました。
  • 2006-05-29 : リリース版をさしかえました

  • 2006-06-07 (水) 18:05:11 taku : 度々申し訳ございません。snap://dired-mode/${HOME2}/.howm-attach/2006/06/timetable_tokaido

のように、"dired-mode"の文字列が入るとエラーになってしまいます。wanderlust等では問題はありません。snap:///${HOME2}/.howm-attach/2006/06/timetable_tokaido はOKです。

  • thx. 直してみました.
  • 2006-06-07 (水) 23:13:43 taku : ありがとうございます!確認しました。毎度すみません。
  • 2006-06-14 (水) 09:59:37 taku : dired-modeでsnap-recordしても、snap-abbreviate-environment-variablesがついてきません。ターゲットのファイルを開いた状態でsnap-recordすると${HOME}のようについてくるのですが。
  • thx. これでどうでしょう. コード本体とコメント部分の defadvice と, 両方に修正あり.
  • 2006-06-18 (日) 00:09:47 taku : できました!ありがとうございました。
  • 2006-07-17 (月) 13:14:01 taku : 最近、Meadow3のバージョンを上げたら、また${HOME2}の変換が出来なくなっていました。ちょっと調べてみます。
  • 2006-07-18 (火) 15:10:37 taku : ↑すみません、勘違いのようでした。元居。

  • 2007-03-03 (土) 18:51:36 ま : ひさしぶりです。snap も3年目です。例によって成果をアップします。
;;;* snap://cvs-mode/~/
(defun snap-play:cvs-mode (spell)
  (cvs-examine spell t))
(defun snap-record:cvs-mode ()
  (abbreviate-file-name default-directory))
;;;* snap://thumbs-mode/~/
(defun snap-record:thumbs-mode ()
  ;; only for `thumbs-show-all-from-dir' not `thumbs-dired-show-marked'.
  (abbreviate-file-name thumbs-current-dir))
(defun snap-play:thumbs-mode (spell)
  (require 'thumbs)
  (thumbs-show-all-from-dir spell nil t))
;;;* snap://thumbs-view-image-mode/~/tmp.jpg
(defun snap-record:thumbs-view-image-mode ()
  (abbreviate-file-name thumbs-current-image-filename))
(defun snap-play:thumbs-view-image-mode (spell)
  (require 'thumbs)
  (if (file-exists-p spell)
      (thumbs-find-image spell)
    (message "No such file:%s" spell)))
(defun snap-record-string-without-cgi ()
  (let ((snap-record-cgi nil))
    (snap-record-string)))
  • 2007-03-03 (土) 18:55:49 ま : 次は修正です。
;;; snap://bbdb-mode/a : require に修正。
(defun snap-play:bbdb-mode (spell)
  (require 'bbdb-com)
  (bbdb spell nil))
  • 2007-03-03 (土) 18:57:42 ま : 次は ffap, bookmark との連携です。
;; snap-extension
;;; bookmark+snap
(defadvice bookmark-buffer-file-name 
  (around bookmark-buffer-file-name+snap first () disable)
  "Extend it's function for snap protocol"
  (or ad-do-it
      (setq ad-return-value (snap-record-string))))
(defadvice bookmark-jump-noselect (around bookmark-jump-noselect+snap first (str) disable)
  "Extend it's function for snap protocol with the help of
`bookmark-jump-noselect-for-snap'.

Suppose `bookmark-jump-noselect' has (str) as inputs and
returns (BUFFER . POINT)
"
  (bookmark-maybe-load-default-file)
  (let* ((str (ad-get-arg 0))
	 (url (bookmark-get-filename str)))
    (cond 
     ((string-match snap-regexp url)
      (setq ad-return-value (bookmark-jump-noselect-for-snap str)))
     (t ad-do-it))))
(defun bookmark-jump-noselect-for-snap (str)
  (let* ((url                    (bookmark-get-filename str))
	 (snap-p                  (string-match snap-regexp url))
	 (file     (if snap-p url (expand-file-name url)))
         (forward-str            (bookmark-get-front-context-string str))
         (behind-str             (bookmark-get-rear-context-string str))
         (place                  (bookmark-get-position str))
         (info-node              (bookmark-get-info-node str))
         (orig-file              file)
	 )
    (if snap-p
	(save-excursion
	  (save-window-excursion
	    (snap-play-string url)
	    (if forward-str
		(if (search-forward forward-str (point-max) t)
		    (goto-char (match-beginning 0))))
	    (if behind-str
		(if (search-backward behind-str (point-min) t)
		    (goto-char (match-end 0))))
	    (setq bookmark-current-bookmark str)
	    (cons (current-buffer) (point))
	    ))
      (ding))))
;;; ffap+snap
(defvar snap-ffap-url-regexp
  (concat
   "\\`\\("
   "news\\(post\\)?:\\|mailto:\\|file:" ; no host ok
   "\\|"
   "\\(ftp\\|https?\\|telnet\\|gopher\\|www\\|wais\\|snap\\)://" ; needs host
   "\\)."				; require one more character
   ))
(defvar snap-ffap-url-fetcher 'browse-url+snap)
(defun browse-url+snap (url &rest args)
  "Deal with a snap protocol in addition to the function
  `browse-url'"
  (cond
   ((string-match snap-regexp url)
    (snap-play-string url))
   (t (browse-url url args))))
(defvar snap-bindings
  '(
    (global-set-key "\C-xr\M-w" 'snap-record)
    (setq ffap-url-regexp snap-ffap-url-regexp)
    (setq ffap-url-fetcher snap-ffap-url-fetcher)
    (ad-enable-advice 'bookmark-buffer-file-name 'around 'bookmark-buffer-file-name+snap)
    (ad-enable-advice 'bookmark-jump-noselect 'around 'bookmark-jump-noselect+snap)
    )
  "snap binding")
(defun snap-bindings nil
  "Evaluate the forms in variable `snap-bindings'."
  (interactive)
  (eval (cons 'progn snap-bindings)))

(snap-bindings)
  • 2007-03-03 (土) 19:02:21 ま : 最後のやつは本体に含めるのは微妙かも知れませんが、いつものように適当に宜しくお願いします。 (ffap-bindings) とおなじニュアンスです。
  • 毎度ありがとうございます > まさん. 取り込ませていただきますので少しお待ちください.
  • 2007-04-11 (水) 23:51:50 名無しさん : 取り込みが遅れていてすみません. いまの snap.el には byte-compile できるようにする仕組み(thx! > 2ch3:254)が入ったので, それに対応させた上で取り込みたいと思っています.
  • 2007-05-16 大変遅くなりましたが, 取り込ませていただきました. ありがとうございます. (snap-with-features を使う, 名前を snap-* にする, snap-bindings は除く, などちょこまか改変あり)

  • 2007-05-18 (金) 15:43:00 taku : 最新のsnap.elをロードした状態で、wanderlustのフォルダー(MH形式)にアクセスするると、エラーが発生します。BugPasteに貼り付けておきます。
  • 念のため確認ですが…
    • (require 'snap) を消すと治まる?
    • make test で起動してから発症させるまでのキー操作は?
      • めんどうなら M-x howm-bug-shot の結果を貼ってください
  • 2007-05-21 (月) 22:40:13 taku : (require 'snap)を消すと治まります。howm-bug-shotをバグペーストに貼らせていただきました。
  • なぜ snap が関係するのかまだ理解できませんが, ひとまず:
    • (1) /usr/share/emacs/22.0.95/site-lisp/bitmap-mule/x-face-mule.elc と /usr/share/emacs/22.0.95/site-lisp/bitmap-mule/gnus-bitmap.elc の出自を教えてください.
      • どこで何から入手?
      • 誰がどうバイトコンパイルした?
    • (2) 可能なら, *.elc を消して *.el の方で試してください(上の二つも wl も snap も). 症状が変わらなければ, *Backtrace* の内容を貼ってください. →参考:バックトレースのとり方
    • (3) 以下の結果はどうなるでしょう? (もし *.el が別の場所にあるなら適当に読みかえて)
cd /usr/share/emacs/22.0.95/site-lisp/bitmap-mule/
grep require x-face-mule.el gnus-bitmap.el
  • すみません、遅くなりました。中間報告です。
    • →(1) aptitudeで、bitmap-muleとx-face-mule-elをインストールして入ったものです。
    • →(2) aptの仕様だと、*.elcしかインストールしないようなので、上記二つのパッケージ自体を削除しました。そしたら、上手く動きました。
    • →(3) ちょっとソースが、どこにaptで入ってくるのかわからないので、個別に持ってきて実験してみます。
  • aptitude っていうことは debian? linux ならディストリビューションとバージョンも参考に書いていただけます?
  • taku: 以下が動作環境です
    • debian -> lenny(i386)
    • x-face-el -> 1.3.6.24-10
    • bitmap-mule -> 8.5+20030825.0433-6
  • taku:出回っている、x-face-e21をインストしてみましたが、現象は起きませんでした。しばらくこれでいこうと思います。

  • 2008-04-09 (水) 00:08:16 dareka : wlのを参考にmewにも対応してみました。
(snap-with-features (mew)
  (snap-define-op snap-record:mew-summary-mode ()
    (let ((folder (mew-summary-folder-name))
          (msgno (mew-summary-message-number))
          (msgid (mew-summary-my-id)))
      (snap-encode:mew-summary-mode folder msgno msgid)))

  (snap-define-op snap-play:mew-summary-mode (spell)
    (let* ((state (snap-decode:mew-summary-mode spell))
           (fld-name (car state))
           (msgno (string-to-number (cadr state)))
           (msgid (nth 2 state))
           (mode (car (snap-decode (thing-at-point 'snap)))))
      (unless mew-init-p (mew))
      (mew-summary-visit-folder fld-name)
      (when (mew-summary-search-msg msgno)
        (when (equal mode "mew-virtual-mode")
          (mew-summary-make-thread))
        (if mew-summary-goto-line-then-display
            (mew-summary-display)))))

  ;; smewを使って、Message-Idから目的のメールの位置を返す。
  ;; ローカルフォルダしかテストしてない。
  (snap-define-op snap-repair:mew-summary-mode (spell)
    (let* ((state (snap-decode:mew-summary-mode spell))
           (fld-name (car state))
           (msgno (cadr state))
           (msgid (nth 2 state)))
      (with-temp-buffer
        (call-process mew-prog-smew nil t nil "-p"
                      (mew-expand-file "+" mew-id-db-file)
                      msgid "")
        (goto-char (point-min))
        (when (looking-at (format "\\(.*\\)/\\([0-9]+\\)\\(%s\\)?"
                                  (regexp-quote mew-suffix)))
          (setq fld-name (concat mew-proto (mew-match-string 1)))
          (setq msgno (mew-match-string 2))))
      (snap-encode:mew-summary-mode fld-name msgno msgid)))

  (defun snap-encode:mew-summary-mode (folder-name msgno message-id)
    (concat folder-name "/" msgno ":" message-id))

  (defun snap-decode:mew-summary-mode (spell)
    (and (string-match "\\(.*\\)/\\([^/]*\\):\\([^/]*\\)" spell)
         (let ((fld-name (match-string-no-properties 1 spell))
               (msgno (match-string-no-properties 2 spell))
               (msgid (match-string-no-properties 3 spell)))
           (list fld-name msgno msgid))))

  (defalias 'snap-play:mew-virtual-mode 'snap-play:mew-summary-mode)
  (defalias 'snap-record:mew-virtual-mode 'snap-record:mew-summary-mode)
  (defalias 'snap-repair:mew-virtual-mode 'snap-repair:mew-summary-mode)
  )
  • Gnus, mew, wl の大三元がそろいましたね. ありがとうございます. snap.el 本体に取り込ませていただけるでしょうか?
  • 2008-04-15 (火) 01:59:19 dareka : はい、取り込みお願いします。
  • 取り込ませていただきました. ありがとうございます.
(Please LogIn to post comments.)