Menggunakan NppExec dan Ruby untuk membuat skrip fitur makro baru untuk Notepad ++

8

Saya bekerja di AS dan Eropa, dan beralih antara format bulan / hari (AS) dan hari / bulan (UE) menyebabkan ambiguitas ketika melihat melalui log atau catatan (mis. 7/8/12 8 Juli atau 7 Agustus?).

Saya ingin mengubah fitur cap waktu Notepad ++ untuk menggunakan format internasional

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

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

Catatan, memiliki HARI dalam seminggu dijabarkan akan menjadi tambahan yang bagus, dan menghindari harus mencari hari apa itu dalam kalender.

Saat ini PLTN tidak memiliki fleksibilitas ini. Apakah ada cara untuk melakukan ini menggunakan semacam makro atau skrip, mungkin menggunakan Ruby?

Assad Ebrahim
sumber
Apa tanda hubung antara DD & DAY dan DAY & HH?
Louis Waweru
Tanda hubung ganda - untuk secara visual mengatur tanggal dari hari dari waktu. Tampaknya lebih menyenangkan secara estetika daripada 2012-08-19-Sun-20:30. (Ingin cap waktu menjadi satu unit karakter, maka tidak ingin spasi ...) Sunting pertanyaan yang telah diedit.
Assad Ebrahim
1
Setelah melakukan pekerjaan koding yang berat selama bertahun-tahun menggunakan Notepad ++ karena fitur set out-of-the-box yang kuat, Anda tidak tahu berapa kali saya ingin dapat menghubungkannya dengan bahasa scripting dari dalam GUI. Terima kasih telah memposting ini!
Ben Richards

Jawaban:

6

Berbagi cara melakukan ini menggunakan plugin NppExec dan Ruby.

Larutan:

Pendekatan : Dapatkan bahasa skrip eksternal (dalam hal ini Ruby) untuk mengembalikan stempel waktu yang diformat dan untuk NppExec untuk menerimanya dan memasukkannya ke lokasi kursor dalam file saat ini yang ditunjukkan pada Notepad ++.

Pertama-tama konfigurasikan konsol:

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

Kemudian di NppExec> Jalankan perintah menu, masukkan potongan berikut:

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

Ini menggunakan mesin Ruby untuk menghasilkan stempel waktu dan menyisipkannya di mana kursor berada dalam file saat ini di Notepad ++. Hasilnya (dengan penundaan sekitar 500 ms) adalah cap waktu:

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

Catatan: Meskipun hal ini tentu saja berhasil, jika ada yang memiliki solusi yang tidak bergantung pada apa pun eksternal (dalam hal ini Ruby), itu akan lebih baik.


Sunting: "Memproduksi" solusinya ... (ketahanan dan kenyamanan)

Dengan mengikuti langkah-langkah di bawah ini, solusi di atas dapat diproduksi ...

Rintangannya adalah bahwa menutup Notepad ++ kehilangan konfigurasi konsol, jadi ini harus diset pada setiap start-ulang.

Jadi kami mengatur konfigurasi konsol sebagai skrip yang dijalankan secara otomatis setiap kali Notepad ++ dimulai.

Kemudian kaitkan pintasan keyboard (hotkey) ke skrip buku harian untuk kenyamanan.

Langkah 1: Masukkan kode buku harian ke dialog NppExec Excute ...: Plugins > NppExec > Execute..., berikan nama (Anda akan menggunakan nama itu nanti)

Langkah 1 - Masukkan kode buku harian

Langkah 2: Masukkan kode konfigurasi setup_console dengan cara yang sama:

Langkah 2 - Masukkan kode konfigurasi konsol

Langkah 3, 4, 5: Di Plugins > NppExec > Advanced Options, atur setup_console untuk dijalankan saat startup (3), buat item Menu untuk kode buku harian (4), dan masukkan item Menu ke dalam Macromenu (5):

Langkah 3,4,5 - Mempersiapkan semuanya

Langkah 6: Atur tombol pintas keyboard (pintasan) ke skrip buku harian:, Settings > Shortcut Mapper... > Pluginsdan gulir ke bawah hingga Anda menemukan nama skrip buku harian yang Anda gunakan ...

Langkah 6 - Pintasan keyboard

Hasil: Melihat di bawah Macrosperintah menu, Anda akan melihat perintah Timestamp baru Anda dengan pintasan keyboard.

Hasil - selesai

Selesai!

Assad Ebrahim
sumber