Ö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 yardımcı programı, bir C programı biçimlendiricisidir. Girdi_dosyası (input-file) içindeki C programını seçeneklere göre yeniden biçimlendirir. Belirtilebilecek seçenekler aşağıda açıklanmıştır. Dosya adlarından önce veya sonra yer alabilirler.
NOT: Yalnızca bir girdi_dosyası belirtirseniz, biçimlendirme yerinde (in-place) yapılır; yani biçimlendirilmiş dosya girdi_dosyası'na geri yazılır ve girdi_dosyası'nın bir yedek kopyası geçerli dizine yazılır. Eğer 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 çevre değişkeni kullanılarak geçersiz kılınabilir.
Eğer çıktı_dosyası (output-file) belirtilirse, indent bunun girdi_dosyası'ndan farklı olduğundan emin olmak için kontrol eder.
Aşağıda listelenen seçenekler, indent tarafından uygulanan biçimlendirme stilini kontrol eder.
-bacc, -nbacc: Eğer -bacc belirtilirse, her koşullu derleme (conditional compilation) bloğunun çevresine boş bir satır eklenmeye zorlanır. Örneğin, her #ifdef'in önüne ve her #endif'in arkasına. Bu tür blokları çevreleyen diğer boş satırlar yutulacaktır. Varsayılan: -nbacc.-bad, -nbad: Eğer -bad belirtilirse, her bildirim (declaration) bloğundan sonra boş bir satır eklenmeye zorlanır. Varsayılan: -nbad.-badp, -nbadp: Bu, bir prosedürdeki ilk bildirim kümesine (ilk '{' karakterinden hemen sonrasına) uygulanması ve hiç bildirim olmasa bile boş bir satır üretilmesine neden olması dışında -bad seçeneğine benzer. Varsayılan: -nbadp.-bap, -nbap: Eğer -bap belirtilirse, her prosedür gövdesinden sonra boş bir satır eklenmeye zorlanır. Varsayılan: -nbap.-bbb, -nbbb: Eğer -bbb belirtilirse, her blok yorumundan önce boş bir satır eklenmeye zorlanır. Varsayılan: -nbbb.-bc, -nbc: Eğer -bc belirtilirse, bir bildirimdeki her virgülden sonra yeni bir satır eklenmeye zorlanır. -nbc bu seçeneği kapatır. Varsayılan: -nbc.-bl, -br: -bl seçeneğinin belirtilmesi, bileşik ifadeleri şu şekilde hizalar:
if (...) { kod }
-br (varsayılan) seçeneğinin belirtilmesi ise onları şu hale getirir:
if (...) { kod }
-bs, -nbs: sizeof ifadesinden sonra her zaman bir boşluk eklenip eklenmeyeceğini belirler. Varsayılan: -nbs.-cn: Kod üzerindeki yorumların başlayacağı sütun. Varsayılan: 33.-cdn: Bildirimler üzerindeki yorumların başlayacağı sütun. Varsayılan, bu yorumların kod üzerindeki yorumlarla aynı sütunda başlamasıdır.-cdb, -ncdb: Yorum sınırlayıcılarının (comment delimiters) boş satırlara yerleştirilmesini etkinleştirir (devre dışı bırakır). Bu seçenek etkinleştirildiğinde yorumlar şu şekilde görünür:
/*
- bu bir yorumdur */
Şunun gibi görünmek yerine:
/* bu bir yorumdur */
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şmaya (cuddle up) zorlanmasını etkinleştirir (devre dışı bırakır). Varsayılan: -ce.-cin: Devam girintisini (continuation indent) n olarak ayarlar. Devam satırları, ifadenin ilk satırının başlangıcından o kadar uzağa girintilenecektir. Parantez içindeki ifadeler, -lp etkin olmadıkça veya devam girintisi ana girintinin tam olarak yarısı olmadıkça, iç içe geçmeyi belirtmek için ek girinti alır. -ci seçeneğinin varsayılan değeri -i ile aynıdır.-clin: case etiketlerinin, bunları içeren switch ifadesinin n sekme durağı (tab stop) sağına girintilenmesine neden olur. -cli0.5, case etiketlerinin yarım sekme durağı girintilenmesini sağlar. Varsayılan: -cli0.-cs, -ncs: Tür dönüşümlerindeki (casts) parantez içindeki tür adlarından sonra bir 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 tür yorumların kodun bir girinti düzeyi soluna yerleştirileceği anlamına gelir. Varsayılan -d0 seçeneğinin belirtilmesi, bu yorumları kodla aynı hizaya getirir. Aşağıdaki yorum girintileme bölümüne bakın.-din: Genel (global) değişken adlarının ve tüm struct/union üye adlarının, tür bildirimlerinin başlangıcına göre karakter konumları cinsinden girintisini belirtir. Varsayılan: -di16.-dj, -ndj: -dj bildirimleri sola hizalar. -ndj bildirimleri kodla aynı şekilde girintiler. Varsayılan: -ndj.-ei, -nei: Özel else-if işlemeyi etkinleştirir (devre dışı bırakır). Etkinleştirilirse, bir else'i takip eden if ifadesi, önceki if ifadesiyle aynı girintiye sahip olacaktır. Varsayılan: -ei.-eei, -neei: if ve while ifadelerinin ifade kısmının devam satırlarında fazladan girintilemeyi etkinleştirir (devre dışı bırakır). Bu devam satırları bir seviye daha fazla girintilenecektir. Varsayılan: -neei.-fbs, -nfbs: Fonksiyon bildirimi ile açılış süslü parantezinin iki satıra bölünmesini etkinleştirir (devre dışı bırakır). Varsayılan: -fbs.-fc1, -nfc1: 1. sütunda başlayan yorumların biçimlendirilmesini etkinleştirir (devre dışı bırakır). Genellikle, başında `/' olan ve 1. sütunda başlayan yorumlar programcı tarafından özenle elle biçimlendirilmiştir. Bu tür durumlarda -nfc1 kullanılmalıdır. Varsayılan: -fc1.-fcb, -nfcb: Blok yorumlarının (/*\nile başlayanlar) biçimlendirilmesini etkinleştirir (devre dışı bırakır). Genellikle blok yorumları programcı tarafından pek de özenli olmayan bir şekilde elle biçimlendirilmiştir ancak yalnızca satır sonlarını değiştirecek bir yeniden biçimlendirme istenmez. Bu tür durumlarda -nfcb kullanılmalıdır. Blok yorumları bu durumda kutu (box) yorumları gibi işlenir. Varsayılan: -fcb.-in: Bir girinti düzeyi için sütun sayısı. Varsayılan: 8.-ip, -nip: Parametre bildirimlerinin sol kenar boşluğundan itibaren girintilenmesini etkinleştirir (devre dışı bırakır). Varsayılan: -ip.-ln: Bir çıktı satırının maksimum uzunluğu. Varsayılan: 78.-lcn: Bir blok yorumundaki çıktı satırının maksimum uzunluğu. Varsayılan 0'dır, bu da blok yorum satırlarının -l seçeneğine uygun olarak 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, yerel değişken adlarının genel olanlarla aynı miktarda girintilenmesidir.-lp, -nlp: Devam satırlarındaki parantez içine alınmış kodları hizalar. -lp seçeneği ile eğer bir satırda o satırda kapatılmamış bir sol parantez varsa, devam satırları sol parantezin hemen sonrasındaki karakter konumunda başlayacak şekilde hizalanır. Örneğin, -nlp etkinken devam eden bir kod parçası şu şekilde görünür:
p1 = ilk_prosedür(ikinci_prosedür(p2, p3), üçüncü_prosedür(p4, p5));
-lp etkinken (varsayılan) kod biraz daha net görünür:
p1 = ilk_prosedür(ikinci_prosedür(p2, p3), üçüncü_prosedür(p4, p5));
İki yeni satır daha eklediğimizde şunu elde ederiz:
p1 = ilk_prosedür(ikinci_prosedür(p2, p3), üçüncü_prosedür(p4, p5));
-lpl, -nlpl: -lpl ile devam satırlarındaki parantez içine alınmış kod, sağ kenar boşluğunu aşacak olsa bile hizalanır. -nlpl (varsayılan) ile sağ kenar boşluğunu aşacak olan böyle bir satır, geçerli girinti düzeyinin soluna yerleştirilmesini gerektirmiyorsa, kenar boşluğu içinde tutulması için sola kaydırılır. -nlp seçilmişse bu anahtarların hiçbir etkisi yoktur.-npro: Profil dosyalarının ('./.indent.pro' ve '~/.indent.pro') yoksayılmasına neden olur.-Pdosya: Belirtilen dosyadan profil okur.-pcs, -npcs: Eğer doğruysa (-pcs) tüm prosedür çağrılarında ad ile(arasına bir boşluk eklenir. Varsayılan: -npcs.-ps, -nps: Eğer doğruysa (-ps) işaretçi dolaylı başvuru operatörü (->) diğer herhangi bir ikili (binary) operatör gibi işlenir. Varsayılan: -nps.-psl, -npsl: Eğer doğruysa (-psl) 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 (devre dışı bırakır). Varsayılan: -sc.-sob, -nsob: Eğer -sob belirtilirse, indent isteğe bağlı boş satırları yutar. Bunu bildirimlerden sonraki boş satırlardan kurtulmak için kullanabilirsiniz. Varsayılan: -nsob.-st: indent aracının girdisini standart girdiden (stdin) almasına ve çıktısını standart çıktıya (stdout) vermesine neden olur.-ta: "_t" ile biten tüm belirteçleri otomatik olarak tür anahtar sözcükleri listesine ekler.-Ttür_adı: Tür anahtar sözcükleri listesine tür_adı (typename) ekler. Adlar birikir: -T birden fazla kez belirtilebilir. Programınızda görünen ve typedef ile tanımlanan tüm tür adlarını belirtmeniz gerekir; birkaç tanesini kaçırırsanız hiçbir zarar gelmez ancak program olması gerektiği kadar güzel biçimlendirilmez. Bunu yapmak zahmetli bir iş gibi görünebilir ancak aslında C'deki bir sorunun belirtisidir: typedef dilde sözdizimsel bir değişikliğe neden olur ve indent tüm typedef örneklerini bulamaz.-tsn: Sekme durakları (tab stops) arasında varsayılan mesafe. Varsayılan: 8.-Udosya: Dosyadaki tür adlarını tür anahtar sözcükleri listesine ekler.-ut, -nut: Çıktıda sekme (tab) karakterlerinin kullanılmasını etkinleştirir (devre dışı bırakır). Varsayılan: -ut.-v, -nv: -vayrıntılı(verbose) modu açar; -nv ise kapatır. Ayrıntılı moddayken, indent 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: indent aracının sürüm numarasını yazdırmasına ve çıkmasına neden olur.
Oturum açma dizininizde ve/veya geçerli dizinde .indent.pro adlı bir dosya oluşturup istediğiniz seçenekleri dahil ederek indent için kendi varsayılan profilinizi ayarlayabilirsiniz. Geçerli dizindeki bir .indent.pro dosyası, oturum açma dizininizdekine göre önceliklidir. Eğer indent çalıştırılırsa ve bir profil dosyası varsa, programın varsayılanlarını ayarlamak için bu dosya okunur. Ancak 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
‘Kutu’ (Box) yorumları. indent yardımcı programı, yorum başlangıcından hemen sonra bir tire veya yıldız bulunan (yani /*- veya /**) herhangi bir yorumun, yıldızlardan oluşan bir kutu ile çevrelenmiş bir 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.
Düz metin. Diğer tüm yorumlar düz metin olarak kabul edilir. indent yardımcı programı, bir satıra mümkün olduğunca çok kelime (boşluklar, sekmeler veya yeni satırlarla ayrılmış) sığdırır. Boş satırlar paragrafları böler.
Yorum girintileme
Eğer bir yorum kod içeren bir satırdaysa, -cn komut satırı parametresi ile ayarlanan yorum sütununda başlatılır. Aksi takdirde yorum, kodun o sırada yerleştirildiği yerin n girinti düzeyi solunda başlatılır; burada n, -dn komut satırı parametresi 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 işlemci satırları
Genel olarak, indent ön işlemci (preprocessor) satırlarına dokunmaz. Yapacağı tek yeniden biçimlendirme, sondaki yorumları düzeltmektir. Satır içi (embedded) 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 yardımcı programı, C'nin sözdizimi hakkında önemli ölçüde bilgi sahibidir ancak toleranslı (forgiving) bir ayrıştırıcıya sahiptir. Eksik ve hatalı biçimlendirilmiş sözdizimlerinin olağan türleriyle başa çıkmaya çalışır. Özellikle, şu makroların kullanımı:
#define forever for(;;)
düzgün bir şekilde işlenir.
Çevre
indent yardımcı programı HOME çevre değişkenini kullanır.
Dosyalar
./.indent.pro profil dosyası ~/.indent.pro profil dosyası
Geçmiş
indent komutu 4.2BSD sürümünde ortaya çıkmıştır.
Hatalar
indent yardımcı programı, ls(1) komutundan daha fazla seçeneğe sahiptir.
Yaygın bir hata, şu komutu yazarak bir dizindeki tüm C programlarını girintilemeye çalışmaktır:
indent *.c
Bu muhtemelen bir özellik değil, bir hatadır.
macOS 26.4 June 28, 2023 macOS 26.4