Asi vas to neprekvapi ale jsem zasadne proti pouzivani ASCII kodu pro TAB ve zdrojacich. Jako programatorske embrio jsem TABy ve zdrojacich mel a nabil jsem si usta. Problem je v rozsypani textu.
Jedna z vlastnosti TABu je drzet zacatek sloupce a tady nastava problem.
*) nektere editory nahrazuji tab konstatnim poctem mezer. Jine udrzuji sloupce
*) Pri zmene sirky TABu z napr. 8 na 4 muze dojit k rozsypani textu pokud ma mene nez 4 znaky.
Priklad:
aa<tab-4>bb
- tady "bb" bude na sloupci 4
aa<tab-8>bb
- tady "bb" bude na sloupci 8
aaaaa<tab-4>bb
- tady "bb" bude na sloupci 8 - !!! POZOR !!! zmena a ukazkove rozsypani zdrojace
aaaaa<tab-8>bb
- tady "bb" bude na sloupci 8
UZAVER:
klavesu TAB pouzivam, IDE zarovnava na sloupec (jedno jestli 2, 4, 8, .. znaku) ale souboru jsou vzdy mezery.
Logický úrovně, třeba vnitřek smyčky, odsazovat TABem. Fyzické formátování - něco pod něčím, třeba hvězdičku v komentáři, zarovnávat mezerou. Podtržítkem jsem zvýraznil mezery, [TAB] je samozřejmě tab.
[TAB][TAB]for... {
[TAB][TAB][TAB]/*
[TAB][TAB][TAB]_*_začátek komentáře
[TAB][TAB][TAB]_*_dál komentář
[TAB][TAB][TAB]_*_dál komentář
[TAB][TAB][TAB]_*/
[TAB][TAB][TAB]tělo smyčky
[TAB][TAB]}
Zkus si to: sed "s/\[TAB\]/sem_dej_mezery/g; s/_/ /g" < file a měň si v tom sedu šířku "tabu". Zarovnání komenáře na hvězdičky to nerozbije - nanejvýš tam budeš mít to, co ti přeteče z minulého řádku.
Problem je, ze toto funguje len pri niektorych (C-like) jazykoch. Napriklad taky assembler:
navestie1:[TAB]insn1[TAB]operand1,operand2[TAB]; komentar
navestie2:[TAB]insn2[TAB]operand1,operand2[TAB]; komentar
A teraz sa spytam: ak insnX je dlhsia nez vami definovana velkost TAB-u, ako vyriesite rozbitie zdrojakov? Detto pre navestieX? Ak operand1 a/alebo operand2 su mensie/vacsie nez vami definovana velkost TAB-u, ako vyriesite odsadenie komentarov?
Isteze, mohli by sme argumentovat, ze operandy a komentare nemaju byt odsadozvane (TAB) ale zarovnavane (medzery), ale stale to rozbija prvy stlpec (navestia), cim sa dostavame do stavu, ze nemozeme TAB-mi odsadzovat nic.
Volakedy som na 100% suhlasil s argumentami vyssie, ale ako som zacal robit viac s asm, tak som zistil, ze medzery si jedine spolahlive riesenie. Som si isty, ze by sa nasiel aj iny jazyk, ked TAB proste nefunguju.
"Logický úrovně, třeba vnitřek smyčky, odsazovat TABem. Fyzické formátování - něco pod něčím, třeba hvězdičku v komentáři, zarovnávat mezerou."
V mojom prispevku som dospel k tomu, ze OK, komentare a operandy teda chceme zarovnavat, cize medzerami. Ale navestia a kod su logicka uroven (musia zacinat na 0-tom resp. 1-vom indexe) a stale to nefunguje inak ako s medzerami.