Utilisation de NppExec et Ruby pour créer un script d'une nouvelle fonctionnalité de macro pour Notepad ++

8

Je travaille aux États-Unis et en Europe, et le basculement entre les formats mois / jour (États-Unis) et jour / mois (UE) entraîne des ambiguïtés lors de la consultation des journaux ou des notes (par exemple, le 8 juillet 2012, le 8 juillet ou le 7 août?).

J'aimerais changer la fonction d'horodatage du Bloc-notes ++ pour utiliser le format international

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

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

Notez que le fait de préciser le JOUR de la semaine serait un bon supplément et évite d'avoir à rechercher quel jour il était dans un calendrier.

Actuellement, les centrales nucléaires ne disposent pas de cette flexibilité. Existe-t-il un moyen de le faire en utilisant une macro ou un script quelconque, peut-être en utilisant Ruby?

Assad Ebrahim
la source
Quels sont les tirets entre DD & DAY et DAY & HH?
Louis Waweru
Les doubles tirets - consistent à décaler visuellement la date du jour à partir de l'heure. Semble plus agréable esthétiquement que 2012-08-19-Sun-20:30. (J'aimerais que l'horodatage soit une seule unité de caractères, donc je ne veux pas d'espaces ...) Ont édité la question en conséquence.
Assad Ebrahim
1
Après avoir effectué un travail de codage intensif au fil des ans à l'aide de Notepad ++ en raison de son puissant ensemble de fonctionnalités prêtes à l'emploi, vous n'avez aucune idée du nombre de fois où j'ai voulu pouvoir m'y connecter avec un langage de script à partir de l'interface graphique. Merci d'avoir posté ça!
Ben Richards

Réponses:

6

Partager comment faire cela en utilisant le plugin NppExec et Ruby.

Solution:

Approche : Obtenez un langage de script externe (dans ce cas Ruby) pour renvoyer l'horodatage formaté et pour que NppExec le reçoive et l'insère à l'emplacement du curseur dans le fichier actuel affiché dans Notepad ++.

Configurez d'abord la console:

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

Ensuite, dans NppExec> commande de menu Exécuter, entrez l'extrait de code suivant:

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

Cela utilise le moteur Ruby pour générer l'horodatage et l'insère à l'emplacement du curseur dans le fichier en cours dans Notepad ++. Le résultat (avec un retard d'environ 500 ms) est l'horodatage:

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

Remarque: Bien que cela fasse certainement le travail, si quelqu'un a une solution qui ne repose sur rien d'extérieur (dans ce cas, Ruby), ce serait mieux.


Edit: "Produire" la solution ... (robustesse et confort)

En suivant les étapes ci-dessous, la solution ci-dessus peut être produite ...

Un obstacle est que la fermeture de Notepad ++ perd la configuration de la console, donc cela doit être installé à chaque redémarrage.

Nous avons donc mis en place la configuration de la console comme un script qui s'exécute automatiquement à chaque démarrage de Notepad ++.

Associez ensuite un raccourci clavier (raccourci clavier) au script du journal pour plus de commodité.

Étape 1: Entrez le code du journal dans une boîte de dialogue NppExec Excute ... Plugins > NppExec > Execute..., en lui donnant un nom (vous utiliserez ce nom plus tard)

Étape 1 - Entrez le code du journal

Étape 2: entrez le code de configuration setup_console de la même manière:

Étape 2 - Entrez le code de configuration de la console

Étapes 3, 4, 5: dans Plugins > NppExec > Advanced Options, définissez setup_console pour qu'il s'exécute au démarrage (3), créez un élément de menu pour le code de journal (4) et placez l'élément de menu dans le Macromenu (5):

Étapes 3,4,5 - Configuration complète

Étape 6: définissez un raccourci clavier (raccourci) sur le script du journal: Settings > Shortcut Mapper... > Pluginset faites défiler vers le bas jusqu'à ce que vous trouviez le nom du script du journal que vous avez utilisé ...

Étape 6 - Raccourci clavier

Résultat: en regardant sous la Macroscommande de menu, vous verrez votre nouvelle commande d'horodatage avec raccourci clavier.

Résultat - terminé

Terminé!

Assad Ebrahim
la source