[Meggányolva] mc syntax highlight felhasználónként

Fórumok

Sziasztok!

Az alábbi gondom van. PIC assembly programozáshoz az mcedit-et használom, s ehhez faragtam egy picasm.syntax file-t, illetve tudom, mit írnék a Syntax file-ba. Ugyanakkor nem szeretném a /usr/share/mc/syntax alá tenni, mert az mc frissülésekor elbukom a beállításaimat, az immutable flag alkalmazása bántja a szemem, az oprendszer frissítésekor megint csak bukom a dolgot. Így szeretném per user használni a Syntax file-t.

Ezzel két bajom van. Egyrészt fogalmam sincs, hogy a $HOME/.config/mc/mcedit alkönyvtárba tett Syntax file-ban található include milyen elérési utat használ. A próbálgatásaim nem vezettek eredményre, a $HOME és ~ hivatkozást ez a file nem ismeri, ami nem meglepő, hiszen ezt nem a shell dolgozza fel. Abszolút elérési utat ugyan be tudok drótozni, de rontja a hordozhatóságot, eléggé gány. Mindamellett az a gondom, hogy azt tapasztalom, ha megtalálja a lokális Syntax file-t, akkor a globálissal már nem foglalkozik. Azt szeretném, hogy lokálisan csak ezt az egy szintaxist definiáljam, az összes többi származzon a globális /usr/share/mc/syntax/Syntax file-ból. Ezekre a problémákra tud valaki jó megoldást?

Hozzászólások

Csak filenevet kell írni könyvtárnév nélkül, a saját .syntax file-t pedig a $HOME/.config/mc/mcedit -be rakd,
a saját Syntax fileodban pedig legyen benne minden, ami a /usr/share/... -ben van.

Különben nem próbáltam ki, de gyanítom, hogy ha csak filenévvel hivatkozok, akkor a /usr/share/mc/syntax/ prefix kerül elé. Ez viszont megint nem nyerő, hiszen szeretném elkerülni, hogy saját cuccokat tegyek oda, ahova csomagból települnek a file-ok.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Itt (mc 4.7.5.2, slackware) nincs saját Syntax fileom, létrehozok egy $HOME/.mc/cedit/c.syntax -ot, akkor onnantól kezdve azt használja. Tehát nem prefixet rak elé, hanem bizonyos útvonalakon keresi az adott syntax file-t.
Ha pedig csinálok Syntax file-t is, akkor azt használja a globális helyett.

Az igaz, hogy bemásolhatnám a saját Syntax file-omba a globális tartalmát, ám ekkor megint gond az, ha egy frissítés alkalmával a globális megújul. Azt is csinálhatnám, hogy írok egy saját file-t, s minden login alkalmával egy pici script összeférceli a globálisat és a sajátot, ám ez noha működne, megint csak gányolás, s tuti, elfelejtem majd az oprendszer frissítésekor, mi a fene ez a script, és miért kell. Mondjuk, ha nem ír senki jobb ötletet, akkor lehet, ez lesz. :(

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Az alábbit ámokfutottam:

Syntax.template

file ..\*\\.(asm)$ PIC\sassembly\sProgram
include ${HOME}/.config/mc/mcedit/picasm.syntax

Aztán a script, amelyben van egy felesleges sor:

#!/bin/bash

GLOBAL_SYNTAX_DIR='/usr/share/mc/syntax'
LOCAL_SYNTAX_DIR="$HOME/.config/mc/mcedit"
GLOBAL_SYNTAX_FILE="$GLOBAL_SYNTAX_DIR/Syntax"
LOCAL_SYNTAX_FILE="$LOCAL_SYNTAX_DIR/Syntax"
LOCAL_SYNTAX_TEMPLATE="$LOCAL_SYNTAX_DIR/Syntax.template"

[ ! -d "$GLOBAL_SYNTAX_DIR" -o ! -d "$LOCAL_SYNTAX_DIR" ] && exit 1
[ ! -r "$GLOBAL_SYNTAX_FILE" -o ! -r "$LOCAL_SYNTAX_TEMPLATE" ] && exit 1
sed "s:\\\${HOME}:$HOME:" "$LOCAL_SYNTAX_TEMPLATE" | cat - "$GLOBAL_SYNTAX_FILE" >"$LOCAL_SYNTAX_FILE"
exit 0

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE