ClangFormat adalah salah satu alat terbaik untuk memformat kode sumber secara otomatis dalam C, C ++, Java, JavaScript, Objective-C, C #. Ada plugin untuk lingkungan pengembangan populer (IDE), tetapi sering kali Anda perlu memformat file atau bagian dari file sumber dengan cepat tanpa meluncurkan IDE yang rumit, bereksperimen dengan pengaturan format dan berbagai versi ClangFormat dengan kemampuan untuk cepat membatalkan perubahan. Menggunakan versi konsol ClangFormat untuk tujuan ini tidak nyaman. Solusi yang mungkin adalah dengan menelepon ClangFormat dari editor teks. Situs
web resmi menjelaskan metode integrasi dengan Vim, Emacs dan beberapa lainnya, tetapi tidak ada informasi tentang integrasi dengan Notepad ++. Berikut ini adalah instruksi sederhana untuk Notepad ++ (untuk Windows).
Persyaratan awal
- memformat file yang dibuka di Notepad ++ dengan ClangFormat;
- memformat fragmen yang dipilih dalam file;
- buang perubahan;
- beralih format (set aturan);
- Beralih ke versi lain dari ClangFormat
- gunakan alat standar bila memungkinkan, tanpa membangun kembali ClangFormat dan tanpa menulis plugin baru untuk Notepad ++.
Instalasi dan pengaturan
1. Jika Notepad ++ belum diinstal, unduh dan instal
https://notepad-plus-plus.org2. Di Notepad ++ instal plugin NppExec
NppExec memungkinkan Anda memanggil aplikasi pihak ketiga dari Notepad ++ dan berinteraksi dengan komponen pustaka Scintilla, tempat Notepad ++ ditulis.
Plugins –> Plugin Admin... –> NppExec –> Install
Notepad ++ akan restart, setelah itu
<Notepad++>/plugins/NppExec/
dan
Plugins –> NppExec
item menu
Plugins –> NppExec
akan
Plugins –> NppExec
3. Unduh ClangFormat yang dapat dieksekusi
Untuk melakukan ini, pada halaman
https://llvm.org/builds/ kami menemukan dan mengunduh file instalasi untuk Windows, misalnya
LLVM-XXX-rYYYYYY-win64.exe
. Anda tidak dapat menginstal seluruh paket, cukup ekstrak file
clang-format.exe
oleh
clang-format.exe
. Anda dapat menggunakan 7-zip: hapus ekstensi
.exe
dari
.exe
, buka file dengan 7-zip dan ekstrak
clang-format.exe
dari
bin/
subdirektori. Kami
clang-format.exe
di
clang-format.exe
<Notepad++>/plugins/NppExec/clang-format/
.
4. Tambahkan file konfigurasi untuk ClangFormat
File konfigurasi harus dinamai
.clang-format
atau
_clang-format
. Mereka berisi seperangkat aturan pemformatan (gaya), format yang dijelaskan dalam panduan
Opsi Gaya ClangFormat .
Sebagai contoh, kami menggunakan file dari proyek
Linux Kernel dan
Qt .
.clang-format
diunduh dari GitHub ditempatkan di direktori yang sesuai:
<Notepad++>/plugins/NppExec/clang-format/LINUX_KERNEL/
<Notepad++>/plugins/NppExec/clang-format/QT/
5. Buat skrip untuk NppExec
Buka jendela untuk mengedit dan menjalankan skrip NppExec
Plugins –> NppExec –> Execute...
atau tekan
F6
. Salin dan tempel teks skrip di bawah ini ke dalam jendela dan simpan skrip yang disebut
clang-format
dengan tombol
Save...
Script NppExec // Hide console NPP_CONSOLE 0 //------------------------------------------------------------------------------ // Uncomment a line to select a style //set style = LINUX_KERNEL set style = QT //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ set clangformatexe = $(CWD)\plugins\NppExec\clang-format\clang-format.exe set clangformatcfgdir = $(CWD)\plugins\NppExec\clang-format set tmpdir = $(SYS.TEMP) set clangformatcfgfile = $(clangformatcfgdir)\$(style)\.clang-format set srcfiletmp = $(tmpdir)\~src.tmp //------------------------------------------------------------------------------ cmd.exe /c if exist "$(clangformatexe)" (exit 0) else (exit 1) if $(EXITCODE) != 0 then NPP_CONSOLE 1 echo ERROR: "$(clangformatexe)" not found exit endif cmd.exe /c if exist "$(clangformatcfgfile)" (exit 0) else (exit 1) if $(EXITCODE) != 0 then NPP_CONSOLE 1 echo ERROR: "$(clangformatcfgfile)" not found exit endif // Copy $(clangformatcfgfile) to $(tmpdir)\.clang-format if their temestamps are different cmd.exe /v /c " for %i in ("$(clangformatcfgfile)") do set date1="%~ti" && for %i in ("$(tmpdir)\.clang-format") do set date2="%~ti" && if not "!date1!"=="!date2!" ( echo !date1! != !date2! && echo COPYING $(clangformatcfgfile) to $(tmpdir)\ && copy "$(clangformatcfgfile)" "$(tmpdir)\" /Y )" if $(EXITCODE) != 0 then NPP_CONSOLE 1 echo ERROR copying "$(clangformatcfgfile)" to "$(tmpdir)" exit endif // Get selected text length sci_sendmsg SCI_GETSELTEXT // If nothing is selected - select the current line if $(MSG_RESULT) == 1 then sci_sendmsg SCI_VCHOMEWRAP sci_sendmsg SCI_LINEENDWRAPEXTEND endif // Save selected text to $(srcfiletmp) sel_saveto "$(srcfiletmp)" :a cmd.exe /c if exist "$(srcfiletmp)" (exit 0) else (exit 1) if $(EXITCODE) != 0 then NPP_CONSOLE 1 echo ERROR: "$(srcfiletmp)" not found exit endif // Run ClangFormat $(clangformatexe) -i -style=file "$(srcfiletmp)" if $(EXITCODE) != 0 then NPP_CONSOLE 1 echo ERROR running "$(clangformatexe)" exit endif // Replace selected text with $(srcfiletmp) sel_loadfrom "$(srcfiletmp)" // Delete $(srcfiletmp) file cmd.exe /c del "$(srcfiletmp)"
Setelah memulai skrip, berdasarkan gaya pemformatan terpilih yang ditentukan dalam variabel
style
, memilih file
.clang-format
diinginkan, memeriksa tanggal perubahannya dan, jika perlu, menyalinnya ke direktori sementara. Di sana, fragmen yang dipilih dari kode sumber disalin ke file sementara, setelah
clang-format.exe
. Fragmen yang diformat disalin kembali ke jendela Notepad ++. Kemudian file sementara dihapus.
Di ClangFormat tidak ada cara untuk menentukan path ke file konfigurasi
.clang-format
. ClangFormat akan mencarinya di direktori file yang diformat dan, jika tidak menemukannya, ia akan mencari di direktori induk. Setelah skrip
.clang-format
file
.clang-format
akan tetap berada di direktori sementara agar tidak menyalinnya setiap kali pemformatan dimulai.
Pada semua tahap skrip, kesalahan diperiksa, dan ketika terjadi, jendela konsol NppExec terbuka, di mana pesan ditampilkan.
6. Di Notepad ++, tambahkan item menu baru untuk menjalankan skrip
Buka
Plugins –> NppExec –> Advanced Options...
, dalam daftar drop-down
Associated script
, pilih nama skrip
clang-format
dan klik pada tombol
Add/Modify
.
Kami me-restart Notepad ++, setelah itu item menu
Plugins –> NppExec –> clang-format
akan muncul.

7. Di Notepad ++, konfigurasikan pintasan keyboard untuk menjalankan skrip
Kami akan menggunakan kombinasi
Ctrl + I
dengan analogi dengan QtCreator. Buka
Settings –> Shortcut Mapper
.
Secara default, kombinasi
Ctrl + I
sibuk, jadi Anda harus melepaskannya dengan tombol
Clear
di tab
Main Menu
(baris 38
Split Lines
dalam Notepad ++ versi saat ini). Setelah itu, di tab
Plugin commands
, tetapkan kombinasi
Ctrl + I
ke skrip
clang-format
.
Selesai, kita bisa menggunakannya!
Instruksi untuk digunakan
Buka file sumber di Notepad ++, pilih fragmen yang diinginkan atau semua teks dan tekan
Ctrl + I
Jika tidak ada yang dipilih, baris saat ini akan diformat.

Untuk membatalkan perubahan, gunakan alat editor standar (
Ctrl + Z
).
Untuk mengubah aturan pemformatan, edit file konfigurasi
.clang-format
di direktori
<Notepad++>/plugins/NppExec/clang-format/
Jika Anda perlu menggunakan versi lain dari ClangFormat, maka ubah jalur ke file yang dapat dieksekusi dalam skrip
set clangformat = "\path\to\clang-format.exe"
Untuk memilih gaya pemformatan yang berbeda, tekan
F6
dan dalam teks skrip
clang-format
pilih gaya yang diinginkan dengan menghapus komentar salah satu baris
set style = STYLE_NAME
.
Semua file yang diperlukan ada di
arsip .
Pemformatan bagus!