Usando NppExec y Ruby para crear una nueva función de macro para Notepad ++

8

Trabajo en EE. UU. Y Europa, y cambiar entre los formatos mes / día (EE. UU.) Y día / mes (UE) genera ambigüedades al examinar registros o notas (p. Ej., ¿Es del 8/8/12 al 8 de julio o al 7 de agosto?).

Me gustaría cambiar la función de marca de tiempo de Notepad ++ para usar el formato internacional

YYYY-MM-DD--DAY--HH:MM

2012-08-19--Sun--20:30

Tenga en cuenta que explicar el DÍA de la semana sería un buen extra, y evita tener que consultar qué día fue en un calendario.

Actualmente NPP no tiene esta flexibilidad. ¿Hay alguna manera de hacer esto usando una macro o script de algún tipo, tal vez usando Ruby?

Assad Ebrahim
fuente
¿Cuáles son los guiones entre DD y DÍA y DÍA y HH?
Louis Waweru
Los guiones dobles son para compensar visualmente la fecha del día a partir de la hora. Parece más agradable estéticamente que 2012-08-19-Sun-20:30. (Me gustaría que la marca de tiempo sea una sola unidad de caracteres, por lo tanto, no quiero espacios ...) Ha editado la pregunta en consecuencia.
Assad Ebrahim
1
Después de haber realizado un gran trabajo de codificación a lo largo de los años con Notepad ++ debido a su potente conjunto de características listo para usar, no tiene idea de cuántas veces he querido poder conectarlo con un lenguaje de secuencias de comandos desde la GUI. ¡Gracias por publicar esto!
Ben Richards

Respuestas:

6

Compartir cómo hacer esto usando el complemento NppExec y Ruby.

Solución:

Enfoque : obtenga un lenguaje de script externo (en este caso, Ruby) para devolver la marca de tiempo formateada y para que NppExec lo reciba e inserte en la ubicación del cursor en el archivo actual que se muestra en Notepad ++.

Primero configure la consola:

    npe_console v+   // set console to receive output in $(OUTPUT) variable
    npe_console d+   // set current working directory to same as current file

Luego, en NppExec> Ejecutar comando de menú, ingrese el siguiente fragmento:

    // Diary snippet (Generates timestamp YYYY-MM-DD--DAY--HH:MM for NPP++)
    npp_console disable     // turn off output displaying to console
    // this ruby one-liner does the work
    ruby -r Date -e "dt=DateTime.now; dname = Date::ABBR_DAYNAMES[dt.wday]; puts dt.strftime(\"%Y-%m-%d--#{dname}--%H:%M\");"  
    sel_settext $(OUTPUT)   // put result at cursor in current file
    npp_console enable      // restore output displaying to console
    npp_console 0           // hide the console window

Esto usa el motor Ruby para generar la marca de tiempo y lo inserta donde está el cursor en el archivo actual en Notepad ++. El resultado (con un retraso de aproximadamente 500 ms) es la marca de tiempo:

    2012-08-20--Mon--20:16

Nota: Si bien esto ciertamente hace el trabajo, si alguien tiene una solución que no se base en nada externo (en este caso, Ruby), sería mejor.


Editar: "Produciendo" la solución ... (robustez y conveniencia)

Siguiendo los pasos a continuación, la solución anterior se puede producir ...

Un obstáculo es que cerrar Notepad ++ pierde la configuración de la consola, por lo que debe configurarse en cada reinicio.

Así que configuramos la configuración de la consola como un script que se ejecuta automáticamente cada vez que se inicia Notepad ++.

Luego asocie un atajo de teclado (tecla de acceso rápido) al script del diario para mayor comodidad.

Paso 1: Ingrese el código del diario en un cuadro de diálogo NppExec Excute ... Plugins > NppExec > Execute..., dándole un nombre (lo usará más adelante)

Paso 1 - Ingrese el código del diario

Paso 2: Ingrese el código de configuración setup_console de manera similar:

Paso 2: ingrese el código de configuración de la consola

Pasos 3, 4, 5: en Plugins > NppExec > Advanced Options, configure setup_console para que se ejecute al inicio (3), cree un elemento de menú para el código del diario (4) y coloque el elemento de menú en el Macromenú (5):

Pasos 3,4,5: configuración completa

Paso 6: establezca una tecla de acceso rápido del teclado (método abreviado) en el script del diario: Settings > Shortcut Mapper... > Pluginsy desplácese hacia abajo hasta encontrar el nombre del script del diario que utilizó ...

Paso 6 - Atajo de teclado

Resultado: al mirar debajo del Macroscomando de menú, verá su nuevo comando Timestamp con atajo de teclado.

Resultado - hecho

¡Hecho!

Assad Ebrahim
fuente