2012-06-29 36 views
5

Khi tôi chạy lệnh bất kỳ-c-etags-chọn với tệp TAGS tương đối lớn, tôi luôn nhận được thông báo lỗi như Lỗi tràn trong đối sánh regexp bên trong bộ đệm mini trên Emacs. Trong bộ đệm *Messages*, xuất hiện thông báo tường trình như sau:Làm cách nào để thay đổi Kích thước Ngăn xếp có sẵn cho Emacs?

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

Có vẻ như Emacs không có đủ kích thước ngăn xếp để đọc toàn bộ dữ liệu thẻ. Có cách nào để tăng kích thước ngăn xếp cho Emacs không?

Tôi cố gắng này với 2 phiên bản của Emacs:

  • Emacs Đối với Mac OS X 24.1 (Universal Binary)
  • Emacs Đối với Mac OS X 23.4 (Universal Binary)

Nhưng, cả hai đều cho thấy cùng một thông báo lỗi.

Cảm ơn trước!

+0

Bạn có thể muốn xem việc thay thế 'Bất cứ điều gì' bằng ['Helm'] (https://github.com/emacs-helm/helm#readme) có giải quyết được vấn đề không, vì vấn đề thứ hai đang được phát triển tích cực. – phils

+0

Cảm ơn bạn! Tôi đã thử 'Helm', nhưng vẫn tồn tại cùng một vấn đề. – mahata

+0

Bạn có thể gửi báo cáo lỗi cho họ, trong trường hợp đó; có lẽ họ có thể sửa chữa nó cho bản phát hành tiếp theo. – phils

Trả lời

1

cách giải quyết Có thể dễ dàng cho bạn:

Hơn thế nữa: [\ 0- \ 377 [: nonascii:]] * tránh “Stack tràn trong regexp khớp” cho các văn bản lớn, ví dụ:> 34k.

... và/hoặc ...

bảng thẻ của tôi là ở những nơi khác nhau, tùy thuộc vào mã Tôi làm việc với. Tôi thấy dễ dàng có biến môi trường $ DEVELOP trỏ đến thư mục tôi đang làm việc, có TAGS cho Emac và thẻ cho vi.

+0

Cảm ơn bạn! 2 liên kết này hữu ích! – mahata

0

Tôi xác nhận rằng nếu đối số thứ 2 cho chức năng kết hợp chuỗi quá lớn, hàm sẽ không xử lý được đối số. Tôi đã thêm một hạn chế cho chức năng như sau:

$ 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))) 

Tôi nghĩ Đó là một loại hack nhanh và bẩn, nhưng bây giờ nó hoạt động tốt.

+0

Tôi đã thêm [issue] (https://github.com/emacs-helm/helm/issues/77) cho helm.Vui lòng chuyển sang nó và gửi PR. –

+0

Cảm ơn bạn đã thêm sự cố! – mahata

Các vấn đề liên quan