.inputrc conditionel ?

Marc Chantreux marc.chantreux at ulpmm.u-strasbg.fr
Mon Apr 24 10:49:36 CEST 2006


bonjour a tous, 

rassurez-vous : je ne me suis pas mis a bash :)

Comme d'habitude avec les produits du bovin de boston, j'ai un problème:
Je me rend compte que beaucoup de logiciels utilisent readline et que
readline est configurable. Jusqu'ici, plutot des bonnes nouvelles.

je regarde un peu dans la doc. de readline et j'écris le .inputrc
suivant (qui me permet d'avoir sous les outils utilisant readline un
comportement identique a ce que j'ai deja sous vim et zsh) :

set editing-mode vi

"''":"\C-v'\C-v'\ei"
"\C-x(":"()\ei"
"((":"\C-v(\C-v)\ei"
"\"\"":"\C-v\"\C-v\"\ei"

# ca marche pas :( 
# "\C-e" : end-of-line

$if Psql 
    "S ": "select " 
    "L ": "like " 
    "II ": "insert into " 
    "U ": "update " 
    "V ": "view " 
    "(V ": "values (( " 
    "C ": "create " 
    "DR ": "drop " 
    "DI ": "distinct " 
    "F ": "from  " 
    "W ": "where  " 
$endif

# python .. c'est parcequ'on m'a forcé !!
$if python
    "I ": "import  " 
    "H ": "help  " 
$endif

Bon .. sous psql, tout fonctionne tres bien, pareil sous bash. Sous
python (le shell interactif), ma macro (( me bouffe la parenthese
ouvrante , j'ai donc |) au final ( | etant l'emplacement du curseur).

Autre problème : 

impossible de faire fonctionner des macros conditionnelles pour sqlite :

"S ": "select " 
"L ": "like " 

directement dans le corps du .inputrc fonctionne parfaitement mais :

$if Sqlite 
    "S ": "select " 
    "L ": "like " 
$endif

ne fonctionne pas ... evidement, j'ai essayé des variantes ( sqlite3 ,
SQLITE , sqlite , ... ) mais je me dis qu'il y a peut etre un truc tout
simple pour connaitre l'application name transmis a readline. Au pire,
je plongerais dans les sources de psql et sqlite pour voir.

Les programmes ne sont pas tous egaux devant readline. Si qq1 peut
m'aider a réparer l'une ou l'autre injustice, il sera mon personnal hero
of the day! 

cordialement,
mc


More information about the Shell mailing list