Quick Open, otro plugin para Geany

Algunos han podido utilizar Sublime Text, un editor muy elegante, extensible y usable para un programador; pero cerrado por lo tanto no me da la gana de colaborar con el señor Jon Skinner su autor (“No le vendas tu libertad a aquel que no te cuenta sus secretos”, B. Franklin).

Una de las cosas más prácticas que tiene este es la funcionalidad que se ejecuta cuando se presiona Ctrl-P, donde el editor abre una caja de texto donde se puede escribir el nombre de un archivo, o algo parecido a este nombre y el editor busca el archivo en el proyecto. Usando para ello una búsqueda exacta y luego una difusa. Vean:

Esto evita que uno tenga que estar navegando por el árbol del proyecto, leyendo un montón de nombres de archivos, cuando generalmente uno sabe lo que busca. Es más o menos lo mismo que el HUD de Unity.

Hacía tiempo había usado Snaked, un editor escrito en Python por Antón Bobrov que también implementa Quick Open, en mi lucha por mejorar Geany hice una operación de Quick Open-tomía donde extirpé este diálogo de Snaked y lo hice una aplicación independiente que luego integré con Geany a través de un plugin en Lua, quedando así:

Para usar el plugin primero instale: python-gtk2, python-glade2 y geany-plugin-lua.

$ sudo aptitude install python-gtk2 python-glade2 geany-plugin-lua

Descargue qopen (el plugin) y descomprímalo en su carpeta personal .config/geany/plugins/geanylua/, si esta no existe créela.

Entonces cree o modifique el archivo .config/geany/plugins/geanylua/hotkeys.cfg agregando en él la siguiente línea

qopen/quick_open.lua

Para poder asignarle un atajo del teclado al plugin. Entonces abra Geany y busque en su configuración de atajos del teclado: “Editar” » “Preferencias” » “Combinaciones”, y asígnele a la acción “Quick Open” el atajo del teclado que desee. Yo sobre le puse “<Control>p”, que sobrescribe la acción de imprimir, pero es que yo nunca imprimo nada y además así queda como el Sublime Text.

Espero me reporten sus impresiones usando el plugin.
Happy Hacking.

Actualización: Ahora se señala en negrita lo que coincide en la lista de archivos y si no se puede detectar el proyecto donde explorar se asume que este es el directorio del archivo donde se solicita la búsqueda. Si usas kde también te va a hacer falta que te instales un paquete de iconos de gnome de lo contrario no funcionará.

Fuente: Escrito por xigurat para CodeNinja


3 comentarios

  1.   Pedro dijo

    I want this but the archive appears to be broken. would you be so kind and push the code to github instead?

    and possibly to open a pull request to geany plugins repo?
    https://github.com/geany/geany-plugins

    this is a killer feature. I am sure many people would want it.

  2.   bartolo quero dijo

    Hola, acabo de leer un post, en el que muestras un plugin para geany
    que escribiste en lua (quick-open creo que se llamaba)..

    verás:
    me encanta geany, pero le hecho en falta la función .LOG del notepad, sí, jejeje
    además se me da bastante mal el inglés…

    como sustituto del geany, uso SciTE, y a éste sí le he hecho un plugin
    .LOG que te pongo a continuación:

    añado las siguientes lineas en User Options File (SciTEUser.properties)
    command.name.12.*=InsertDateTimeLog
    command.12.*=InsertDateTimeLog
    command.subsystem.12.*=3
    command.mode.12.*=savebefore:no
    command.shortcut.12.*=Enter

    añado las siguientes lineas en Lua Startup Script:
    function InsertDateTimeLog()
    local Linea1, esLog, esLogMayus
    Linea1 = editor:GetLine(0)
    if Linea1 == nil then Linea1 = “0000” end
    esLog = string.sub(Linea1,1,4)
    esLogMayus = string.upper (esLog)
    if esLogMayus == “.LOG” then
    editor:AddText(“\n\n——————–\n”)
    editor:AddText(os.date(“%d.%b.%Y__%Hh:%Mm”))
    editor:AddText(“\n——————–\n”)
    else editor:AddText(“\n”)
    end
    end

    Y me gustaría que hicieras algo parecido en GEANY… o me dieras unas pistas…

    seguro que para tí supone poco, y para la comunidad muco: mucha gente
    lo usaría…

    gracias por leerme y saludos..

  3.   ronal dijo

    buenas, te felicito, estoy estudiando el codigo. gracias por compartir. estoy mirando especificamente el archivo icons.py, quiero poner otros iconos que no sean los del sistema

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.