役に立ちましたか?

解決 2

だから私はついにそれを読みた後、 モードのためのimenuメニューの定義を述べた。 emacs-wikiのstrong>セクション

短時間:あなたのカスタマイズにこのビットを追加する必要があります。リストにを追加してください(私はメソッドだけで満足しています)。

(add-hook 'ruby-mode-hook
          (lambda ()
            (set (make-local-variable imenu-generic-expression)
                 '(("Methods"  "^\\( *\\(def\\) +.+\\)"          1)
                   ))))
.

長い回答:私は最初にruby-imenu-generic-expression関数を定義し、imenu-generic-expressionを使用してruby-mode-hookに設定しようとしました:

(defvar ruby-imenu-generic-expression
  '(("Methods"  "^\\( *\\(def\\) +.+\\)"          1))
  "The imenu regex to parse an outline of the ruby file")

(defun ruby-set-imenu-generic-expression ()
  (make-local-variable 'imenu-generic-expression)
  (make-local-variable 'imenu-create-index-function)
  (setq imenu-create-index-function 'imenu-default-create-index-function)
  (setq imenu-generic-expression ruby-imenu-generic-expression))

(add-hook 'ruby-mode-hook 'ruby-set-imenu-generic-expression)
.

これは機能しませんでした(以前と同じエラーが発生します)。 モードのイメンメニューの定義セクション道。さて、私はelispエキスパートではありませんので、ここで私の仮説:基本的に、上記の方法は

のモードのために機能します

メジャーモードは、「実際の」変数 'imenu-generic-expression'のバッファローカルコピーをサポートしています。あなたのモードがそれをしないならば、あなたはフックに頼る必要があります。

foo-modeの例では、ruby-modeのためにそれを実行する方法を明確にしました。したがって、ruby-modeには、実際のimenu-generic-expression変数のバッファローカルコピーがありません。私はまだemacs 23.2(ESK V1を持つ)で働いていたがEMACS24で働いていない理由を説明することはできませんが、少なくとも私は作業ソリューションを見つけました。

他のヒント

この機能はESKの一部であるため(Emacsで予定されているものとは対照的に)あなたはおそらく上流にバグを報告するために最善を尽くします。関連するノートESKのMain Completitor Emacs Preludeは、同じ機能(デフォルトで CC i にバインドされています)を提供し、EMACS 24ではRuby-Modeでうまく機能しているようです。ここ ido-imenuについてもっと見つけることができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top