2012-06-29 14 views
5

何かc-etags-selectコマンドを比較的大きなTAGSファイルで実行すると、私はいつものようなエラーメッセージを表示します。regexp matcherのEmacsのミニバッファ内にスタックオーバーフローが発生します。 Emacsが全体のタグデータを読み込むための十分なスタックサイズを持っていないようだEmacsで使用可能なスタックサイズを変更するにはどうすればよいですか?

File TAGS is large (9MB), really open? (y or n) 
Loading tag file...70% 
and: Stack overflow in regexp matcher 

次のように*Messages*バッファでは、ログメッセージが表示されます。 Emacsのスタックサイズを増やす方法はありますか?

私は、Emacsの2つのバージョンでこれを試してみました:、

  • のEmacs用のMac OS X 24.1(ユニバーサルバイナリ)
  • のEmacs用のMac OS X 23.4(ユニバーサルバイナリ)

しかし、両方とも同じエラーメッセージを示しました。

ありがとうございます!あなたのための

+0

「Anything」を['Helm'](https://github.com/emacs-helm/helm#readme)に置き換えると、後者が積極的に開発されているので、問題を解決できるかどうかを確認したいことがあります。 – phils

+0

ありがとうございます!私は「ヘルム」を試みましたが、同じ問題がまだ残っています。 – mahata

+0

その場合、バグレポートを提出できます。おそらく彼らは次のリリースのためにそれを修正することができます。 – phils

答えて

1

おそらく簡単な回避策:いっそ

は:[0- 377 \ [\:nonascii:]] *「正規表現 マッチャーでスタックオーバーフロー」を回避します巨大なテキスト、例えば、> 34k。

...および/または...

私のタグテーブルには、私が働いて だコードに応じて、異なる場所にあります。私は簡単に環境変数を持っていることがわかりました $ DEVELOPは私が働いているディレクトリを指しています。これには のためのタグがあります。

+0

ありがとう!これらの2つのリンクが役立ちます! – mahata

0

私は文字列一致関数の第二引数が大きすぎる場合、関数は引数を処理するために失敗したことを確認しました。

$ git diff 
diff --git a/lisp/anything/anything-config.el b/lisp/anything/anything-config.el 
index 23f00e5..cee5e13 100644 
--- a/lisp/anything/anything-config.el 
+++ b/lisp/anything/anything-config.el 
@@ -7001,7 +7001,7 @@ If not found in CURRENT-DIR search in upper directory." 
         (anything-aif (string-match "\177" i) 
          (substring i 0 it) 
          i)) 
-   do (cond ((and elm (string-match "^\\(.+\\),[0-9]+" elm)) 
+   do (cond ((and elm (< (length elm) 2000) (string-match "^\\(.+\\),[0-9]+" elm)) 
         (setq fname (match-string 1 elm))) 
        (elm (setq cand (concat fname ": " elm))) 
        (t (setq cand nil))) 

私はそれが迅速かつ汚いハックのようなものだと思うが、それは今も元気働いて次のように私は機能に制限を追加しました。

+0

helmの[issue](https://github.com/emacs-helm/helm/issues/77)を追加しました。それに切り替えてPRを提出してください。 –

+0

問題を追加していただきありがとうございます。 – mahata

関連する問題