Özet
indent [girdi_dosyası [çıktı_dosyası]] [-bacc | -nbacc] [-bad | -nbad] [-badp | -nbadp]
[-bap | -nbap] [-bbb | -nbbb] [-bc | -nbc] [-bl | -br] [-bs | -nbs] [-cn] [-cdn]
[-cdb | -ncdb] [-ce | -nce] [-cin] [-clin] [-cs | -ncs] [-dn] [-din] [-dj | -ndj]
[-ei | -nei] [-eei | -neei] [-fbs | -nfbs] [-fc1 | -nfc1] [-fcb | -nfcb] [-in]
[-ip | -nip] [-ln] [-lcn] [-ldin] [-lp | -nlp] [-lpl | -nlpl] [-npro] [-Pdosya]
[-pcs | -npcs] [-ps | -nps] [-psl | -npsl] [-sc | -nsc] [-sob | -nsob] [-st]
[-ta] [-Ttür_adı] [-tsn] [-Udosya] [-ut | -nut] [-v | -nv] [--version]
Açıklama
indent, C programı biçimlendiricisidir. girdi_dosyası içindeki C programını seçeneklere göre yeniden biçimlendirir. Seçenekler dosya adlarından önce veya sonra yer alabilir.
Yalnızca bir girdi_dosyası belirtilirse biçimlendirme yerinde yapılır; biçimlendirilmiş dosya girdi_dosyası üzerine geri yazılır ve girdi_dosyası için bir yedek kopya geçerli dizine yazılır.
girdi_dosyası /blah/blah/file olarak adlandırılmışsa yedek dosya varsayılan olarak file.BAK adını alır. Yedek dosya için kullanılan uzantı, SIMPLE_BACKUP_SUFFIX ortam değişkeniyle geçersiz kılınabilir.
çıktı_dosyası belirtilirse indent, bunun girdi_dosyası ile farklı olduğundan emin olmak için kontrol yapar.
Seçenekler
-bacc,-nbacc:-baccbelirtilirse her koşullu derleme bloğunun çevresine boş satır eklenmeye zorlanır; örneğin her#ifdefönüne ve her#endifarkasına. Bu tür blokları çevreleyen diğer boş satırlar yutulur. Varsayılan:-nbacc.-bad,-nbad:-badbelirtilirse her bildirim bloğundan sonra boş satır eklenmeye zorlanır. Varsayılan:-nbad.-badp,-nbadp:-badseçeneğine benzer, ancak bir prosedürdeki ilk bildirim kümesine, yani ilk{karakterinden hemen sonrasına, uygulanır ve hiç bildirim olmasa bile boş satır üretilmesine neden olur. Varsayılan:-nbadp.-bap,-nbap:-bapbelirtilirse her prosedür gövdesinden sonra boş satır eklenmeye zorlanır. Varsayılan:-nbap.-bbb,-nbbb:-bbbbelirtilirse her blok yorumundan önce boş satır eklenmeye zorlanır. Varsayılan:-nbbb.-bc,-nbc:-bcbelirtilirse bir bildirimdeki her virgülden sonra yeni satır eklenmeye zorlanır.-nbcbu seçeneği kapatır. Varsayılan:-nbc.-bl,-br: Bileşik ifadelerin süslü parantez yerleşimini seçer.-bl, açılış süslü parantezini yeni satıra alır;-braynı satırda bırakır. Varsayılan:-br.-bs,-nbs:sizeofifadesinden sonra her zaman boşluk eklenip eklenmeyeceğini belirler. Varsayılan:-nbs.-cn: Kod üzerindeki yorumların başlayacağı sütunu ayarlar. Varsayılan:33.-cdn: Bildirimler üzerindeki yorumların başlayacağı sütunu ayarlar. Varsayılan olarak bu yorumlar kod üzerindeki yorumlarla aynı sütunda başlar.-cdb,-ncdb: Yorum sınırlayıcılarının boş satırlara yerleştirilmesini etkinleştirir veya devre dışı bırakır. Bu seçenek kodun sağındaki yorumları değil, yalnızca blok yorumlarını etkiler. Varsayılan:-cdb.-ce,-nce:elseifadelerinin hemen önündeki}karakterine yanaşmasını etkinleştirir veya devre dışı bırakır. Varsayılan:-ce.-cin: Devam girintisininolarak ayarlar. Devam satırları, ifadenin ilk satırının başlangıcından bu kadar uzağa girintilenir.-ciseçeneğinin varsayılan değeri-iile aynıdır.-clin:caseetiketlerinin, bunları içerenswitchifadesininnsekme durağı sağına girintilenmesine neden olur.-cli0.5,caseetiketlerinin yarım sekme durağı girintilenmesini sağlar. Varsayılan:-cli0.-cs,-ncs: Tür dönüşümlerindeki parantez içindeki tür adlarından sonra boşluk gelip gelmeyeceğini kontrol eder. Varsayılan:-ncs.-dn: Kodun sağında yer almayan yorumların yerleşimini kontrol eder. Örneğin-d1, bu yorumların kodun bir girinti düzeyi soluna yerleştirileceği anlamına gelir. Varsayılan-d0, yorumları kodla aynı hizaya getirir.-din: Genel değişken adlarının ve tümstruct/unionüye adlarının, tür bildirimlerinin başlangıcına göre karakter konumları cinsinden girintisini belirtir. Varsayılan:-di16.-dj,-ndj:-djbildirimleri sola hizalar.-ndjbildirimleri kodla aynı şekilde girintiler. Varsayılan:-ndj.-ei,-nei: Özelelse ifişlemeyi etkinleştirir veya devre dışı bırakır. Etkinleştirilirse,elsedeğerini takip edenif, öncekiififadesiyle aynı girintiye sahip olur. Varsayılan:-ei.-eei,-neei:ifvewhileifadelerinin ifade kısmının devam satırlarında fazladan girintilemeyi etkinleştirir veya devre dışı bırakır. Bu devam satırları bir seviye daha fazla girintilenir. Varsayılan:-neei.-fbs,-nfbs: Fonksiyon bildirimi ile açılış süslü parantezinin iki satıra bölünmesini etkinleştirir veya devre dışı bırakır. Varsayılan:-fbs.-fc1,-nfc1: 1. sütunda başlayan yorumların biçimlendirilmesini etkinleştirir veya devre dışı bırakır. 1. sütunda başlayan ve başında/olan yorumlar genellikle elle biçimlendirilmiştir; bu durumlarda-nfc1kullanılmalıdır. Varsayılan:-fc1.-fcb,-nfcb:/*\nile başlayan blok yorumlarının biçimlendirilmesini etkinleştirir veya devre dışı bırakır. Yalnızca satır sonlarını değiştirecek yeniden biçimlendirme istenmiyorsa-nfcbkullanılmalıdır. Varsayılan:-fcb.-in: Bir girinti düzeyi için sütun sayısını belirtir. Varsayılan:8.-ip,-nip: Parametre bildirimlerinin sol kenar boşluğundan itibaren girintilenmesini etkinleştirir veya devre dışı bırakır. Varsayılan:-ip.-ln: Bir çıktı satırının maksimum uzunluğunu belirtir. Varsayılan:78.-lcn: Bir blok yorumundaki çıktı satırının maksimum uzunluğunu belirtir. Varsayılan0, blok yorum satırlarının-lseçeneğine göre sınırlandırılacağı anlamına gelir.-ldin: Yerel değişken adlarının, tür bildirimlerinin başlangıcına göre karakter konumları cinsinden girintisini belirtir. Varsayılan olarak yerel değişken adları genel olanlarla aynı miktarda girintilenir.-lp,-nlp: Devam satırlarındaki parantez içine alınmış kodları hizalar.-lpile bir satırda kapatılmamış sol parantez varsa devam satırları sol parantezin hemen sonrasındaki karakter konumunda başlar. Varsayılan:-lp.-lpl,-nlpl:-lplile devam satırlarındaki parantez içine alınmış kod, sağ kenar boşluğunu aşacak olsa bile hizalanır.-nlplile böyle bir satır, geçerli girinti düzeyinin soluna yerleştirilmesini gerektirmiyorsa kenar boşluğu içinde tutulmak için sola kaydırılır.-nlpseçilmişse bu seçeneklerin etkisi yoktur. Varsayılan:-nlpl.-npro: Profil dosyalarının, yani./.indent.prove~/.indent.pro, yoksayılmasına neden olur.-Pdosya: Belirtilen dosyadan profil okur.-pcs,-npcs:-pcsetkinse tüm prosedür çağrılarında ad ile(arasına boşluk eklenir. Varsayılan:-npcs.-ps,-nps:-psetkinse işaretçi dolaylı başvuru operatörü (->) diğer ikili operatörler gibi işlenir. Varsayılan:-nps.-psl,-npsl:-psletkinse tanımlanan prosedürlerin adları 1. sütuna yerleştirilir; varsa türleri önceki satırlarda bırakılır. Varsayılan:-psl.-sc,-nsc: Tüm yorumların sol kenarına yıldız işareti (*) yerleştirilmesini etkinleştirir veya devre dışı bırakır. Varsayılan:-sc.-sob,-nsob:-sobbelirtilirseindentisteğe bağlı boş satırları yutar. Bunu bildirimlerden sonraki boş satırlardan kurtulmak için kullanabilirsiniz. Varsayılan:-nsob.-st:indentaracının girdisini standart girdiden almasına ve çıktısını standart çıktıya vermesine neden olur.-ta:_tile biten tüm belirteçleri otomatik olarak tür anahtar sözcükleri listesine ekler.-Ttür_adı: Tür anahtar sözcükleri listesinetür_adıekler. Adlar birikir;-Tbirden fazla kez belirtilebilir. Programınızda görünen vetypedefile tanımlanan tüm tür adlarını belirtmeniz gerekir.-tsn: Sekme durakları arasındaki varsayılan mesafeyi belirtir. Varsayılan:8.-Udosya: Dosyadaki tür adlarını tür anahtar sözcükleri listesine ekler.-ut,-nut: Çıktıda sekme karakterlerinin kullanılmasını etkinleştirir veya devre dışı bırakır. Varsayılan:-ut.-v,-nv:-vayrıntılı modu açar,-nvkapatır. Ayrıntılı moddaykenindent, bir girdi satırını iki veya daha fazla çıktı satırına böldüğünde bunu bildirir ve tamamlandığında bazı boyut istatistikleri verir. Varsayılan:-nv.--version:indentsürüm numarasını yazdırır ve çıkar.
Biçim Örnekleri
-bl seçeneği bileşik ifadeleri şu şekilde hizalar:
if (...)
{
kod
}
-br seçeneği, yani varsayılan davranış, onları şu hale getirir:
if (...) {
kod
}
-cdb etkinken blok yorumları şu şekilde biçimlendirilir:
/*
* bu bir yorumdur
*/
-ncdb etkinken aynı yorum tek satırda kalabilir:
/* bu bir yorumdur */
-nlp etkinken devam eden kod parçası şu şekilde görünebilir:
p1 = ilk_prosedür(ikinci_prosedür(p2, p3),
üçüncü_prosedür(p4, p5));
-lp etkinken aynı kod daha hizalı görünür:
p1 = ilk_prosedür(ikinci_prosedür(p2, p3),
üçüncü_prosedür(p4, p5));
Daha fazla satırla -lp hizalaması şu şekildedir:
p1 = ilk_prosedür(ikinci_prosedür(p2,
p3),
üçüncü_prosedür(p4,
p5));
Profil Dosyaları
Oturum açma dizininizde veya geçerli dizinde .indent.pro adlı dosya oluşturup istediğiniz seçenekleri yazarak indent için kendi varsayılan profilinizi ayarlayabilirsiniz.
Geçerli dizindeki .indent.pro, oturum açma dizininizdeki dosyaya göre önceliklidir. indent çalıştırıldığında profil dosyası varsa, program varsayılanlarını ayarlamak için bu dosya okunur.
Komut satırındaki seçenekler profil seçeneklerini her zaman geçersiz kılar. Seçenekler boşluklar, sekmeler veya yeni satırlarla ayrılmalıdır.
Yorumlar
indent, yorum başlangıcından hemen sonra tire veya yıldız bulunan, yani /*- veya /** ile başlayan, herhangi bir yorumun yıldızlardan oluşan kutu ile çevrelenmiş yorum olduğunu varsayar. Böyle bir yorumun her satırı, yorumun ilk satırının girintisindeki değişikliği hesaba katmak için girintisinin ayarlanabilmesi dışında değiştirilmeden bırakılır.
Diğer tüm yorumlar düz metin olarak kabul edilir. indent, bir satıra mümkün olduğunca çok kelime sığdırır. Kelimeler boşluklar, sekmeler veya yeni satırlarla ayrılır. Boş satırlar paragrafları böler.
Yorum Girintileme
Bir yorum kod içeren bir satırdaysa, -cn ile ayarlanan yorum sütununda başlatılır.
Aksi halde yorum, kodun o sırada yerleştirildiği yerin n girinti düzeyi solunda başlatılır; burada n, -dn ile belirtilir.
Bir satırdaki kod yorum sütununu aşarsa yorum daha sağda başlar ve aşırı durumlarda sağ kenar boşluğu otomatik olarak genişletilebilir.
Ön İşlemci Satırları
Genel olarak indent, ön işlemci satırlarına dokunmaz. Yapacağı tek yeniden biçimlendirme sondaki yorumları düzeltmektir. Satır içi yorumlara dokunmaz.
Koşullu derleme (#ifdef ... #endif) tanınır ve indent, ortaya çıkan sözdizimsel özellikleri doğru şekilde telafi etmeye çalışır.
C Sözdizimi
indent, C sözdizimi hakkında önemli ölçüde bilgi sahibidir, ancak toleranslı bir ayrıştırıcıya sahiptir. Eksik ve hatalı biçimlendirilmiş sözdizimlerinin olağan türleriyle başa çıkmaya çalışır.
Özellikle aşağıdaki gibi makrolar düzgün işlenir:
#define forever for(;;)
Ortam
HOME: Profil dosyası konumunu belirlemek için kullanılır.
Dosyalar
./.indent.pro: Profil dosyası.~/.indent.pro: Profil dosyası.
Tarihçe
indent komutu 4.2BSD sürümünde ortaya çıkmıştır.
Hatalar
indent, ls(1) komutundan daha fazla seçeneğe sahiptir.
Yaygın bir hata, bir dizindeki tüm C programlarını şu komutla girintilemeye çalışmaktır:
indent *.c
Bu muhtemelen bir özellik değil, hatadır.