.emacs.el で、bufferを新しく立ち上げた時トリガーになるような、便利な hookはないでしょうか。

現在、 autolookup.el を読み込み、 (add-hook 'find-file-hooks 'auto-lookup-mode) を使用しています。
この auto-lookup-mode を、pukiwiki-mode.el における pukiwiki-mode 内て使用したいと考えています。
しかし、pukiwiki-modeでは ファイルをオープンする訳ではないため、このhookは使えません。
このような状況で、bufferを新しく立ち上げた時の、便利な hookの情報をお待ちしています。
hookに限らず、参考になりそうな情報は歓迎致します。
ちなみに、「M-x apropos <RET> .*hook」 で探してみたのですが、いまいちピンと来るものがありませんでした。
cf.
autolookup.el : http://www.bookshelf.jp/elc/autolookup.el
pukiwiki-mode.el : http://www.bookshelf.jp/pukiwiki/pukiwiki.php?%A5%A2%A5%A4%A5%C7%A5%A2%BD%B8%2Fpukiwiki-mode

回答の条件
  • URL必須
  • 1人5回まで
  • 登録:2006/04/08 20:41:55
  • 終了:2006/04/15 20:45:02

回答(3件)

id:yzb No.1

yzb回答回数18ベストアンサー獲得回数22006/04/08 23:22:48

ポイント27pt

auto-lookup-modeもpukiwiki-modeもつかっていないので、

動作確認はできていませんが、、、

(add-hook 'find-file-hooks 'auto-lookup-mode) に

ならって、

(add-hook 'pukiwiki-index-mode-hook 'auto-lookup-mode)と

(add-hook 'pukiwiki-history-index-mode-hook 'auto-lookup-mode)を

追加するのはどうでしょうか?

pukiwikiのソースをざっと見る限り、上記2つのhook変数が

行儀良く宣言されてるので、この変数を提案しています。

M-x pukiwiki-edit-mode というのも使っているのであれば、

変数 pukiwiki-edit-mode-hookに対して、上記関数で

auto-lookup-modeを加えてあげればいいかと思います。


ただ、pukiwiki-index-modeと、auto-lookup-modeを

同時に走らせられるのかどうかは自分では分かりません。。

以下ご参考

ソースの調べ方ですが。。

ソースを見て、普段お使いのコマンドと、その関数内の

(run-hooks hogehoge-hook)が見つかれば、その

hogehoge-hookに自分の走らせたい関数をadd-hookで

追加すれば動くはず。。 多分。。

URL必須との事ですが、自分のblogサイトで良いのでしょうか??

http://www.doblog.com/weblog/myblog/63398

使い方分かってなくてすみません。。

id:kazumichi

アドバイスを元に、

(add-hook 'pukiwiki-index-mode-hook 'auto-lookup-mode)

(add-hook 'pukiwiki-history-index-mode-hook 'auto-lookup-mode)

(add-hook 'pukiwiki-edit-mode-hook 'auto-lookup-mode)

を定義して、emacsを立ち上げてみましたが、pukiwiki-editにおいてauto-lookupは起動しませんでした。

また、

(add-hook 'pukiwiki-index-mode-hook 'flyspell-mode)

(add-hook 'pukiwiki-history-index-mode-hook 'flyspell-mode)

(add-hook 'pukiwiki-edit-mode-hook 'flyspell-mode)

もやってみましたが、同様動きませんでした。

しかし、

(add-hook 'pukiwiki-index-mode-hook 'ac-mode-without-exception)

(add-hook 'pukiwiki-history-index-mode-hook 'ac-mode-without-exception)

(add-hook 'pukiwiki-edit-mode-hook 'ac-mode-without-exception)

は動作しました。

明日もう一度チャレンジしてみようと思います。

引き続き情報をお待ちしています。(返信は翌日となると思います。)

cf. ac-mode.el <http://www.taiyaki.org/elisp/ac-mode/>

2006/04/09 00:40:29
id:yzb No.2

yzb回答回数18ベストアンサー獲得回数22006/04/09 11:18:55

ポイント27pt

中途半端な回答だったようですみません。

普段、emacsを使っていて、いろいろ

カスタマイズして使っていますが、動かしきるには、

pukiwikiとautolookupを自分でも使ってみないと

いけませんね。時間をもらえれば自分の環境で

入れて調べてみます。。

http://www.doblog.com/weblog/myblog/63398

id:kazumichi

いえいえ、有益な情報有り難うございます。

run-hooksは、知りませんでしたので、感謝です。

さて、以下に*Messages*バッファを一部記述しますが、紹介して頂いた3つのpukiwiki*-hookは全てhookとしてトリガーになっているようです。

トリガーにはなれど、バッファには反映されないのが、よくわからないところです。

また、以下の*Messages*を見ると、唯一動作しているac-mode.eは、pukiwiki*-hookではなく、Emacs起動時に既に起動していたように見えます。

が、Emacs起動直後に表示される*scratch*バッファでは、ac-modeは有効ではなかったのも、不可解です。

---*Messages* ここから---

Loading mwheel...done

(/Users/kawachi/Documents/Applications/Emacs.app/Contents/MacOS/Emacs)

Loading tool-bar...done

Loading image...done

Loading migemo...

Loading advice...done

Loading migemo...done

Toggling tool-bar-mode off; better pass an explicit argument.

Loading encoded-kb...done

Loading ac-mode...done

Loading recentf...done

Loading /Users/kawachi/.recentf...done

Cleaning up the recentf list...done (0 removed)

Loading autoinsert...done

Loading jit-lock...done

For information about the GNU Project and its goals, type <f1> C-p.

--- ここまでEmacs起動時の*Messages*、ここからpukiwiki-mode起動 ---

Loading pukiwiki-mode (source)...

Loading edebug...done

Wrote /Users/kawachi/literal-test-file

Loading pukiwiki-mode (source)...done

Loading flyspell...done

Starting new Ispell process...

Loading autolookup...done

Toggling flyspell-mode off; better pass an explicit argument.

Loading index list...

Loading cl-macs...done

Mark set

Loading InterWikiName list...

Loading attach list... (C-g for Cancel)

Loading... done.

Loading sort...done

Sorting... done.

Mark set

---*Messages* ここまで---

今後数日は質問をオープンにし続ける予定ですので、引き続き、yzbさん、また他の方、情報をお待ちしています。

Emacsに付随する *-hookはリファインがされやすい環境にあり、確度や情報の点で優勢だと思いますので、そちらの方面の情報も歓迎します。

また念のため、私の使用している環境を公開しておきます。

Emacs(22.0.50.1) http://www.kazumichi.org/kb/archives/000300.html

.emacs.el http://www.kazumichi.org/d/shell_backup/.emacs.el

2006/04/09 13:25:52
id:yzb No.3

yzb回答回数18ベストアンサー獲得回数22006/04/09 20:28:32

ポイント26pt

一部フォローです。

>また、以下の*Messages*を見ると、唯一動作しているac-mode.eは、pukiwiki*-hookではなく、Emacs起動時に既に起動していたように見えます。

kazumichi 様の.emacsを見ましたが、

ac-mode.elは、

(load "ac-mode")

となっており、強制的にファイルを読み込む設定に

なっています。また、一般に、hogehoge.el/hogehoge.elc

ファイルは読み込まれると実行可能な状態にはなりますが、

M-x ac-mode 等としない限り、ロードしただけでは

動きません。(モードが切り替わりません)

>が、Emacs起動直後に表示される*scratch*バッファでは、ac-modeは有効ではなかったのも、不可解です。

ですので、ac-modeになっていないのは、それはそれで

正しくて、ロードして実行可能状態になっているだけ、

というのが正しいと思います。

一方、pukiwikiは、

(autoload 'pukiwiki-edit

"pukiwiki-mode" "pukwiki-mode." t)

とありますように、実行要求があるときに読み込む様に

なっているので、ログ上、loadingのタイミングで

pukiwiki-modeになっています。

(もう少し言うと、pukiwiki-modeにするよう何らかの

 要求(pukiwiki-edit/index/etc)が来たので、emacsは、

autoloadの情報に従い、pukiwiki-modeのファイルを

読み込んで、関数を実行してモードを変更しています)

元々のご質問は、自分の環境でやってみて、もしうまくいったら

doblogのblogに記載します。

質問回答用記事(もしうまくいったら回答します)

http://www.doblog.com/weblog/myblog/63398/2465309#2465309

id:kazumichi

わかりやすい解説、有り難うございます。

load されるだけでは、 modeは起動しないのですね。

納得いたしました。

さてその後、pukiwiki*-hookでの解決に対して個人的な能力の限界を感じたため、font-lock-mode-hookをgoogleで見つけた結果、pukiwiki-modeにおけるauto-lookup起動という当初の目標を達成しました。

(add-hook 'font-lock-mode-hook 'flyspell-mode)

(add-hook 'font-lock-mode-hook 'auto-lookup-mode)

(add-hook 'font-lock-mode-hook 'ac-mode-without-exception)

が副作用として、minibufferにおいてもac-modeで無駄に補完されてしまったり、Emacsがフリーズするようになったりと、解決したとは言えない状況です。

ac-modeはpukiwiki-modeで使用したく、hookで起動する必要があるので、相変わらず試行錯誤状態です。

が、いろいろ前進している気がしますので感謝です。

yzbさんのdoblogの方も注視させて頂きます。

2006/04/09 23:42:06
  • id:yzb
    kazumichi 様

    自分のemacs(meadow)に環境を入れましてテストしました。
    少し場当たり的な解決策ではありますが、以下の式を
    .emacsに挿入してください。

    ;;---------------------------------------
    (defun turn-on-auto-lookup ()
    (auto-lookup-mode 1))

    (require 'pukiwiki-mode)
    (add-hook 'pukiwiki-edit-mode-hook 'turn-on-auto-lookup)
    (add-hook 'pukiwiki-view-mode-hook 'turn-on-auto-lookup))
    ;;---------------------------------------


    挿入する場所としては、kazumichi 様の.emacs中、
    autoloadでpukiwikiを設定している行に続けて
    入れていただければ分かりやすいかと思います。

    (autoload 'pukiwiki-edit
    "pukiwiki-mode" "pukwiki-mode." t)
    (autoload 'pukiwiki-index
    "pukiwiki-mode" "pukwiki-mode." t)
    (autoload 'pukiwiki-edit-url
    "pukiwiki-mode" "pukwiki-mode." t)
    (autoload 'pukiwiki-edit-page
    "pukiwiki-mode" "pukwiki-mode." t)
    *これ以降に書くのがよろしいかと*

    以下少し説明します。
    pukiwiki-editモードにはいると、やはり、
    pukiwiki-edit-mode-hookが実行されます。この
    hookに、auto-lookup-modeを書けば良さそうなものですが、
    引数無しで、auto-lookup-modeを呼び出すと、auto-lookupの
    ON/OFFが反転する仕様です。対象バッファでauto-lookupが
    ONかどうか?はバッファごとに管理された変数、auto-lookup-modeで
    判断するのですが、これがなぜかtrueになってしまっており、
    このため、関数auto-lookup-modeを単に呼び出すだけだと、
    ON->OFFになる様でした。(なぜ初期値がtrueか?までは
    デバッグできていません。。)
    <autolookup.el中、571行付近>
     (defvar auto-lookup-mode nil)
     (make-variable-buffer-local 'auto-lookup-mode)

    理想的には初期値がtrueになる原因を調べて対策を打つべき
    ですが、これは少し大変そうなので、、
    少し場当たり的ではありますが、引数を持たせて、強制的に
    ONにするように、一段関数をかませました。
    それが、turn-on-auto-lookup の関数です。

    requireの式がありますが、これは、add-hookで操作する
    hook用変数をセットアップするため、強制的にpukiwiki-modeを
    呼び出しています。(load "pukiwiki-mode")と同等の動作

    上記対策を施した自分の環境では、M-x pukiwiki-modeで、
    記事の閲覧、ならびに、記事の編集において、
    auto-lookup-modeが働くことを確認しました。もしそれ以外の
    方法で、pukiwiki-modeを使っておられ、lookupが働かない
    場合は、またお問い合わせ下さい。

    動作の証拠?として、画面ハードコピーも取っています。
    辞書はテスト用のなんちゃって辞書なので、訳語は
    エエ加減です。

    同じ内容は以下の記事にも記載しています。

    http://www.doblog.com/weblog/myblog/63398/2533074#2533074

この質問への反応(ブックマークコメント)

トラックバック

  • .emacsの質問(hook関連) 茶国 rev2 2006-05-03 23:08:10
    人力検索はてなにて、 pukiwiki/auto-lookupに関して、hookの方法の質問あり、 少し調べて回答するも、意図通りに動作せず。 自分の環境で調査予定。。 http://q.hatena.ne.jp/1144496512 質問ID:question
  • <B>要約</B>  emacsにおいて、pukiwiki-modeで、デフォルトでauto-lookup-mode を有効にする 設定方法を調査 <B>背景</B>  はてな人力検索で、「auto-lookup-mode を、pukiwiki-mode.el における pukiwiki-mode 内て
「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません