man/text
man · Metin İşleme

$ indent

Bölüm 1 · Metin İşleme

C programı kaynağını girintiler ve biçimlendirir

Ö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: -bacc belirtilirse her koşullu derleme bloğunun çevresine boş satır eklenmeye zorlanır; örneğin her #ifdef önüne ve her #endif arkasına. Bu tür blokları çevreleyen diğer boş satırlar yutulur. Varsayılan: -nbacc.
  • -bad, -nbad: -bad belirtilirse her bildirim bloğundan sonra boş satır eklenmeye zorlanır. Varsayılan: -nbad.
  • -badp, -nbadp: -bad seç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: -bap belirtilirse her prosedür gövdesinden sonra boş satır eklenmeye zorlanır. Varsayılan: -nbap.
  • -bbb, -nbbb: -bbb belirtilirse her blok yorumundan önce boş satır eklenmeye zorlanır. Varsayılan: -nbbb.
  • -bc, -nbc: -bc belirtilirse bir bildirimdeki her virgülden sonra yeni satır eklenmeye zorlanır. -nbc bu 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; -br aynı satırda bırakır. Varsayılan: -br.
  • -bs, -nbs: sizeof ifadesinden 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: else ifadelerinin hemen önündeki } karakterine yanaşmasını etkinleştirir veya devre dışı bırakır. Varsayılan: -ce.
  • -cin: Devam girintisini n olarak ayarlar. Devam satırları, ifadenin ilk satırının başlangıcından bu kadar uzağa girintilenir. -ci seçeneğinin varsayılan değeri -i ile aynıdır.
  • -clin: case etiketlerinin, bunları içeren switch ifadesinin n sekme durağı 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 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ü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 veya devre dışı bırakır. Etkinleştirilirse, else değerini takip eden if, önceki if ifadesiyle aynı girintiye sahip olur. Varsayılan: -ei.
  • -eei, -neei: if ve while ifadelerinin 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 -nfc1 kullanılmalıdır. Varsayılan: -fc1.
  • -fcb, -nfcb: /*\n ile 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 -nfcb kullanı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ılan 0, blok yorum satırlarının -l seç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. -lp ile 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: -lpl ile devam satırlarındaki parantez içine alınmış kod, sağ kenar boşluğunu aşacak olsa bile hizalanır. -nlpl ile 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. -nlp seçilmişse bu seçeneklerin etkisi yoktur. Varsayılan: -nlpl.
  • -npro: Profil dosyalarının, yani ./.indent.pro ve ~/.indent.pro, yoksayılmasına neden olur.
  • -Pdosya: Belirtilen dosyadan profil okur.
  • -pcs, -npcs: -pcs etkinse tüm prosedür çağrılarında ad ile ( arasına boşluk eklenir. Varsayılan: -npcs.
  • -ps, -nps: -ps etkinse işaretçi dolaylı başvuru operatörü (->) diğer ikili operatörler gibi işlenir. Varsayılan: -nps.
  • -psl, -npsl: -psl etkinse 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: -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 almasına ve çıktısını standart çıktıya 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ı 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.
  • -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: -v ayrıntılı modu açar, -nv 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 sü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.