2010-06-05 16 views
5

Me gustaría saber si es posible refactorizar el código R en ESS. Usar buscar y reemplazar en Emacs no parece ser una buena alternativa.Refactorización del código R con ESS/R

+0

¿Qué es exactamente lo que quiere lograr? ¿Puede dar un ejemplo? –

+1

Renombrado de variables. Esto se puede hacer fácilmente con el plugin statet de eclipse, pero no en ess. – ggg

+0

La refacturación de AFAIK en Eclipse está muy por delante de la refactorización en Emacs. En general, Eclipse entiende el lenguaje, mientras que Emacs (más o menos) entiende la sintaxis (tipo de). Pero por alguna razón todavía uso Emacs para todo excepto Java. –

Respuesta

6

ESS en sí no ofrece ninguna función para refactorizar. En su lugar, puede usar la funcionalidad de emacs.

Aquí hay un ejemplo de cómo reemplazar todas las palabras que comienzan con "xxx" y terminan con "yyy" con "zzzzzz" en todos sus archivos R abiertos en el directorio de su proyecto.

  • Cx d (introducir dired)

  • % mr $ (marca todos los archivos que terminan en R o R)

  • Q (entran dired-to-query-replace-regexp) Tipo
  • xxx. * Zzz y zzzzzz w la gallina pidió patrones de reemplazo.
  • aceptar, saltar con y, n

Here es un completo tutorial de cómo buscar-reemplazar en varios archivos. y también cómo guardar todos los búferes modificados con ibuffer.

+0

Refactorizar en un buen IDE es mucho más sofisticado que buscar y reemplazar texto. Por ejemplo, puede cambiar el nombre de un método en la clase 'Foo' de' value' a 'getValue', y encontrará todas las instancias donde se llama a' Foo.value' (manejando las subclases de 'Foo' correctamente), renombrándolas a' Foo.getValue', sin tocar cadenas de 'valor' en lugares no relacionados.El IDE necesita comprender completamente el código para que esto sea posible. –

2

En Emacs puede hacer una búsqueda reemplazar por M-% y luego ! reemplazará cada instancia en el búfer en uso.

Si no quiere decir eso, ¿puede explicar (edite su Q o comente aquí) qué hace Statet y qué le gustaría hacer exactamente en Emacs + ESS?

Cuestiones relacionadas