2012-06-29 12 views
5

Cuando ejecuto cualquier cosa-c-etags-seleccione el comando con un archivo TAGS relativamente grande, siempre aparece el mensaje de error como Desbordamiento de pila en el comparador de regexp dentro del mini buffer en Emacs. En *Messages* buffer, aparece el mensaje de registro de la siguiente manera:¿Cómo puedo cambiar el tamaño de pila disponible para Emacs?

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

Parece que Emacs no tiene suficiente tamaño de la pila para leer datos de la etiqueta enteros. ¿Hay alguna forma de aumentar el tamaño de pila para Emacs?

He intentado esto con 2 versiones de Emacs:

  • Emacs para Mac OS X 24.1 (binario universal)
  • Emacs Para Mac OS X 23.4 (binario universal)

Pero, ambos mostraron el mismo mensaje de error.

¡Gracias de antemano!

+0

Es posible que desee ver si el reemplazo de 'Anything' con [' Helm'] (https://github.com/emacs-helm/helm#readme) resuelve el problema, ya que este último se está desarrollando activamente. – phils

+0

¡Gracias! Intenté 'Helm', pero todavía existe el mismo problema. – mahata

+0

Puede enviarles un informe de error, en ese caso; quizás puedan arreglarlo para la próxima versión. – phils

Respuesta

1

soluciones Posiblemente fácil:

Mejor aún: [\ 0- \ 377 [: nonascii:]] * evita “desbordamiento de pila en la expresión regular de coincidencias” para textos grandes, por ejemplo,> 34k.

... y/o ...

My tags tablas están en lugares diferentes, dependiendo del código que estoy trabajando con . Me resultó fácil tener una variable ambiental $ DEVELOP apuntando al directorio en el que estoy trabajando, que tiene TAGS para Emacs y etiquetas para vi.

+0

¡Gracias! ¡Estos 2 enlaces son útiles! – mahata

0

me confirmó que si segundo argumento para cadena de fósforo función es demasiado grande, la función falla al manejar el argumento. He añadido una restricción para la función de la siguiente manera:

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

Creo que es una especie de truco rápido y sucio, pero se está trabajando bien ahora.

+0

He agregado un [problema] (https://github.com/emacs-helm/helm/issues/77) para el timón.Por favor, cambie a él y envíe PR. –

+0

¡Gracias por agregar el problema! – mahata

Cuestiones relacionadas