Sublime Text 2: Refactoring en Python con SublimeRope

Sublime Text 2: Refactoring en Python con SublimeRope
Facebook Twitter Flipboard E-mail

Ya hemos hablado anteriormente de Sublime Text 2 y de como instalar plugins para él de forma sencilla. Hoy vamos a hablaros sobre como hacer refactoring en Python con este editor y el plugin SublimeRope.

Sublime Text 2 es un editor de código ligero, rápido y flexible, además es fácilmente extensible a través de plugins que pueden ser programados en Python y por tanto es posible hacer uso de librerías Python de forma bastante sencilla al crearlos.

Ese es el caso de SublimeRope que hace uso de la librería Rope para incluir algunas funcionalidades más propias de un IDE que de un editor de código ligero como pretende ser Sublime Text 2.

¿Qué es Rope?


Rope es una librería de refactorización para Python que puede ser usada como librería en otros IDEs como vim, emacs, Spyder o Eric4.

Rope provee de cierta funcionalidad adicional como auto completado del código, localización de definiciones, revisión rápida de documentación y organización automática de imports.

También ofrece características de refactorización y es por esto último por lo que es bastante popular en el mundo de Python. Entre las opciones de refactorización disponibles se encuentran:

  • Renombrado fácil

  • Extracción de métodos y variables

  • Transición de clase, función, módulo, paquete o método

  • Hacer inline de métodos, variables o parámetros

  • Reestructuración de código

  • Cambio de firma de métodos

  • Conversión de módulo a paquete

  • Mucho más…

Instalar SublimeRope


Si has seguido los pasos de nuestro último post sobre Sublime Text 2 tendrás Package Control instalado en tu copia así que instalarlo es realmente sencillo.

Tan solo es necesario abrir la paleta de comandos y utilizar el instalador de paquetes para instalar “SublimeRope”. Una vez instalado podremos utilizar la misma paleta de comandos para crear un nuevo proyecto rope dentro de nuestro proyecto Python y poder disfrutar de las ventajas que el plugin nos brinda.

Palette Command

Paleta de Comandos de Sublime Text

Configurar SublimeRope en nuestros proyectos


Lo primero es crear un nuevo proyecto por lo que accediendo a la paleta de comandos y escribiendo la palabra “rope” veremos que salen varias opciones, entre ellas, “New Project”. Si la seleccionamos, el plugin nos pregunta el directorio donde generar el proyecto, por defecto será la raíz de nuestro proyecto Python.

Si usáis virtualenv o bien no os aparecen todas las librerías de vuestra instalación de Python en el auto completado de código podéis añadir directorios en el archivo de configuración del proyecto Rope en .ropeproject/config.py:

prefs.add(‘python_path’, ‘‘)

SublimeRope no dispone aún de todas las funcionalidades que brinda Rope, pero como se suele decir, Roma no se construyó en un día.

Notas adicionales


Hemos podido comprobar que algunos usuarios de Sublime Text 2 no entienden muy bien como funcionan los plugins en la plataforma. Algunos plugins hacen hook al comportamiento habitual de Sublime Text 2 y otros necesitan ser activados o bien necesitan que creemos keybindings para ellos o bien llevan keybindings y debemos ver cuales son en el menú preferencias.

Otros se utilizan desde la paleta de comandos mientras que no les asignemos un keybinding, este es el caso de SublimeRope. para poder utilizar sus features (a excepción del auto completado que hace hook al auto completado de Sublime Text) podemos utilizar la paleta o bien asignar unos keybindings.

El autor del plugin sugiere los siguientes:

{ “keys”: [“ctrl+r”, “ctrl+d”], “command”: “goto_python_definition”, “context”:
    [
        { “key”: “selector”, “operator”: “equal”, “operand”: “source.python” }
    ]
},
{ “keys”: [“ctrl+r”, “ctrl+h”], “command”: “python_get_documentation”, “context”: [ { “key”: “selector”, “operator”: “equal”, “operand”: “source.python” } ]
},
{ “keys”: [“ctrl+r”, “ctrl+r”], “command”: “python_refactor_rename”, “context”: [ { “key”: “selector”, “operator”: “equal”, “operand”: “source.python” } ]
},
{ “keys”: [“ctrl+r”, “ctrl+e”], “command”: “python_refactor_extract_method”, “context”: [ { “key”: “selector”, “operator”: “equal”, “operand”: “source.python” } ]
},
{ “keys”: [“ctrl+r”, “ctrl+v”], “command”: “python_refactor_extract_variable”, “context”: [ { “key”: “selector”, “operator”: “equal”, “operand”: “source.python” } ]
},
{ “keys”: [“ctrl+r”, “ctrl+n”], “command”: “python_refactor_inline_variable”, “context”: [ { “key”: “selector”, “operator”: “equal”, “operand”: “source.python” } ]
},
{ “keys”: [“ctrl+r”, “ctrl+j”], “command”: “python_jump_to_global”, “context”: [ { “key”: “selector”, “operator”: “equal”, “operand”: “source.python” } ]
},
{ “keys”: [“ctrl+r”, “ctrl+i”], “command”: “python_auto_import”, “context”: [ { “key”: “selector”, “operator”: “equal”, “operand”: “source.python” } ]
},
{ “keys”: [“ctrl+r”, “ctrl+c”], “command”: “python_regenerate_cache”, “context”: [ { “key”: “selector”, “operator”: “equal”, “operand”: “source.python” } ]
}

Happy Hacking.

Más en Genbetadev | Sublime Text 2: Plugins the easy way, Sublime Text 2, ¿el editor de texto definitivo?

Comentarios cerrados
Inicio