Jako řešení problému uvedeného na počátku tohoto vlákna, které by co nejlépe vyhovovalo koncepci systému Formica, se mi spíše než samostatný příkaz jeví makro. Důvodem je asi hlavně to, že v případě příkazu by různé detaily (na něž je upozorněno výše) musely být ošetřeny např. dalšími přepínači, což je těžkopádné a nepřehledné. Naopak makro si uživatel může modifikovat sám, jakmile si ujasní, co přesně požaduje, anebo si od něj může odvodit makra další.
Makro může vypadat například takto:
Macros (
<Ctrl-F11> "změň označené texty" (
<Alt-E> <o> <a> <t> <t> <*> <Enter> {vztahuje se na všechny označené}
<n> <Ctrl-Alt-A> {čeká na vložení textu}
<i> <Ctrl-Home> )
<Shift-F11> "označ a přejmenuj vodič" (
<Ctrl-U> {odznačí, aby nezasáhl jiné vodiče}
<Alt-E> <o> <n> <Enter> {označí vodič pod ukazatelem}
<Alt-O> <e> <n> {aktivuje průběžnou kontrolu netlistu}
<End> <UArr> <UArr> <UArr>
<Ctrl-PgDn> {... zde jí nastaví hodnotu On}
<Ctrl-F11> ) {zavolá připravené makro}
)
??lohu se vyplatí rozdělit do dvou maker, a také do dvou hlavních kroků:
1) označit vodič, jehož labely se mají přejmenovat, pochopitelně včetně těch labelů;
2) změnit označené texty na řetězec zadaný uživatelem;
Makro Ctrl-F11 provede jen druhý krok (který se může hodit i samostatně, a nejen na labely -- proto je v odděleném makru). Makro Shift-F11 označí vodič pod ukazatelem a pak vyvolá Ctrl-F11. Mezitím však udělá dvě akce navíc:
* odznačí dříve označené objekty, aby makro mimovolně nezměnilo ještě další labely či texty;
* aktivuje průběžnou kontrolu netlistu, která varuje v případě výskytu problémů diskutovaných výše (indikace přitom bude kumulativní, takže pokud se netlist lišil od referenčního již před vyvoláním makra, informace o tom se tím neztratí).
Nic ovšem není dokonalé, a tak si i zde lze představit (asi ne zcela běžný) případ, kdy makro Shift-F11 nebude fungovat tak, jak je zamýšleno: různé labely na jednom vodiči (sloužící např. k propojení napájecích napětí), přičemž uživatel je nechce přejmenovat všechny. Kdybychom toto chtěli ošetřit, stačí však mít variantu makra, která místo automaticky zapsané hvězdičky počká na uživatelem vloženou masku (rozlišující měněné labely od ostatních).