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?
- 6440 megtekintés
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.
- A hozzászóláshoz be kell jelentkezni
Akkor lesz ez a hibaüzenet:
Error in file /home/locsemege/.config/mc/mcedit/Syntax on line 26
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
verzió?
- A hozzászóláshoz be kell jelentkezni
mc-4.8.6-1.fc17.x86_64
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
Bele a ~/{.basrc-be,.profile-ba,amivanba}, hogy
function mc {
cat $GLOBALSYN $LOCALSYNPART > $LOCALSYN
exec `which mc`
}
miáltal a gány gány voltának megtartásával ugyan, de néhány kívánalom teljesül.
- A hozzászóláshoz be kell jelentkezni
Épp valami ilyesmit csinálok, csak némileg körülményesebben. :) Mittomén, ellenőrzöm, hogy létezik-e a template file, a global, stb.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Az mc-re lehet hogy van már alias (itt: alias mc='. /usr/share/mc/bin/mc-wrapper.sh') (bár sokat nem számít)
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
Tudsz tesztelni olyat is, hogy két file közül melyik az újabb, és akkor nem kell mindig újraírni.
$ test file1 -nt file2 && echo file1 is newer || echo file2 is newer
- A hozzászóláshoz be kell jelentkezni
Megvan az új helyük a felhasználói syntax fájloknak.
http://manpages.ubuntu.com/manpages/precise/man1/mcedit.1.html alapján:
~/.local/share/mc/mcedit/
Kicsit sokáig tartott kibogarászni.
- A hozzászóláshoz be kell jelentkezni
pedig szvsz nyilvánvaló hogy oda rakja. Hova máshova tenné?
- A hozzászóláshoz be kell jelentkezni
- Oda, ahol régebben is volt? (úgy 10 éve...)
- Oda, ahol a központi user Syntax fájl is áll, és ami a legtöbb helyen dokumentálva is van?
Nem, egy harmadik helyre.
- A hozzászóláshoz be kell jelentkezni