Usando NppExec e Ruby para criar um novo recurso de macro para o Notepad ++


8

Eu trabalho nos EUA e na Europa, e alternar entre os formatos mês / dia (EUA) e dia / mês (UE) leva a ambigüidades ao examinar registros ou anotações (por exemplo, 8/8/12, 8 de julho ou 7 de agosto?).

Gostaria de alterar o recurso de carimbo de data / hora do Notepad ++ para usar o formato internacional

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

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

Observe que escrever o DIA da semana seria um ótimo extra e evita ter que procurar em que dia era um calendário.

Atualmente, o NPP não tem essa flexibilidade. Existe uma maneira de fazer isso usando algum tipo de macro ou script, talvez usando Ruby?


Quais são os traços entre DD e DAY e DAY e HH?
Louis Waweru

Os traços duplos - devem compensar visualmente a data a partir do dia a partir da hora. Parece mais agradável esteticamente do que 2012-08-19-Sun-20:30. (Gostaria que o carimbo de data e hora fosse uma única unidade de caracteres, portanto, não deseja espaços ...) Editei a pergunta de acordo.
Assad Ebrahim

11
Depois de fazer um trabalho pesado de codificação ao longo dos anos usando o Notepad ++ devido ao seu poderoso conjunto de recursos pronto para uso, você não tem idéia de quantas vezes eu quis ser capaz de conectá-lo com uma linguagem de script na GUI. Obrigado por postar isso!
Ben Richards

Respostas:


6

Compartilhando como fazer isso usando o plug-in NppExec e Ruby.

Solução:

Abordagem : obtenha uma linguagem de script externa (neste caso, Ruby) para retornar o carimbo de data / hora formatado e para o NppExec recebê-lo e insira-o no local do cursor no arquivo atual mostrado no Notepad ++.

Primeiro configure o console:

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

Em NppExec> Executar comando de menu, digite o seguinte trecho:

    // 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

Isso usa o mecanismo Ruby para gerar o registro de data e hora e o insere onde o cursor está no arquivo atual no Notepad ++. O resultado (com um atraso de cerca de 500ms) é o registro de data e hora:

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

Nota: Embora isso certamente funcione, se alguém tiver uma solução que não dependa de nada externo (neste caso, Ruby), seria melhor.


Edit: "Produzindo" a solução ... (robustez e conveniência)

Seguindo os passos abaixo, a solução acima pode ser produzida ...

Um obstáculo é que o fechamento do Notepad ++ perde a configuração do console, portanto, isso deve ser configurado a cada reinicialização.

Portanto, definimos a configuração do console como um script que é executado automaticamente toda vez que o Notepad ++ é iniciado.

Em seguida, associe um atalho de teclado (tecla de atalho) ao script do diário por conveniência.

Etapa 1: digite o código do diário em uma caixa de diálogo NppExec Excute ...: Plugins > NppExec > Execute...dando um nome (você usará esse nome mais tarde)

Etapa 1 - Digite o código do diário

Etapa 2: Digite o código de configuração setup_console da mesma forma:

Etapa 2 - Digite o código de configuração do console

Etapas 3, 4, 5: em Plugins > NppExec > Advanced Options, defina setup_console para executar na inicialização (3), crie um item de menu para o código do diário (4) e coloque o item de Macromenu no menu (5):

Passos 3,4,5 - Configurando tudo

Etapa 6: defina uma tecla de atalho do teclado (atalho) para o script do diário: Settings > Shortcut Mapper... > Pluginse role para baixo até encontrar o nome do script do diário que você usou ...

Etapa 6 - Atalho do teclado

Resultado: olhando o Macroscomando de menu, você verá o seu novo comando de carimbo de data / hora com atalho de teclado.

Resultado - concluído

Feito!

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.