Bash et Xemacs

  • Afficher l’historique des commandes commençant par une certaine chaîne de caractères :

    Normalement quand on tape « Up » ou « Down », ça affiche la dernière ligne de l’historique

    Si vous voulez qu’en tapant par exemple « xemacs » puis « Up » ça vous affiche les dernières commandes commençant par xemacs, il faut ajouter dans votre fichier .inputrc :
    « \e[A »: history-search-backward
    « \e[B »: history-search-forward

    ou alors, dans votre .bashrc
    bind ‘ »\e[A »: history-search-backward’
    bind ‘ »\e[B »: history-search-forward’

    L’inconvénient c’est qu’en faisant ça, vous perdez les commandes classiques « previous-history » et « next-history ». Il y a deux solutions

    1) assigner ces commandes aux touches PgUp et Pgdown
    « \e[5~ »: previous-history
    « \e[6~ »: next-history

    2) assigner les history-search aux touches PgUp et Pgdown
    « \e[5~ »: history-search-backward
    « \e[6~ »: history-search-forward

  • Xemacs :
    1) Avec un fichier qui contient plusieurs routines Fortran, ouvrir F90 dans la barre de menu xemacs, puis cliquer sur « Add Imenu Menu ». Ça crée un onglet F90-Imenu dans la barre de menu, qui permet d’aller directement au début de chaque routine (il faut aller dans « procedures » de l’onglet imenu). On peut aussi ajouter le imenu automatiquement en mettant (f90-add-imenu-menu) dans le .xemacs/custom.el
    2) Il y a une option pour mettre les mots clé en majuscules automatiquement : f90-auto-keyword-case ‘upcase-word
    et on peut dire a xemacs de mettre tous les mots-clés en majuscules quand il ouvre le fichier : f90-auto-keyword-case ‘upcase-word
    3) Il y a une option pour couper les lignes longues automatiquement : (auto-fill-mode 1) , et le nombre de colonnes maximum pour la coupure est défini par fill-column 80
    4) Il y a aussi la possibilité d’utiliser des abbréviations, par exemple, on `;i puis espace, ça remplace par INTEGER : (abbrev-mode 1). Pour avoir la liste des abbréviations : ALT+X puis f90-abbrev-help. On peut les redéfinir dans le fichier ./xemacs/custom.el. J’ai remplacé l’accent grave par le ; et j’en ai ajouté quelques unes, notamment le ;w6 pour write(6,*).

    Voici ce que j’ai mis dans mon custom.el :

    (setq f90-mode-hook
    ‘(lambda ()
    ( setq f90-auto-keyword-case ‘upcase-word ; met les mots-clés en majuscules
    fill-column 80 ; la taille maximum des lignes pour faire les coupures
    )
    (f90-change-keywords f90-auto-keyword-case) ; met tous les mots-clés fortran en majuscule à l’ouverture du fichier
    (abbrev-mode 1) ; mode abbreviation
    (auto-fill-mode 1) ; coupures de lignes automatiques
    (f90-add-imenu-menu)
    ))

    (define-abbrev-table ‘f90-mode-abbrev-table ‘(
    (« ;w » « write » )
    (« ;w6 » « write(6,*) » )
    (« ;t » « then » )
    (« ;e » « else » )
    (« ;ed » « end do » )
    (« ;ei » « end if » )
    (« ;dp » « double precision » )
    (« ;mo » « module » )
    (« ;it » « intent » )
    (« ;ey » « entry » )
    (« ;eli » « else if » )
    (« ;r » « real » )
    (« ;ex » « external » )
    (« ;tr » « .true. » )
    (« ;pu » « public » )
    (« ;in » « include » )
    (« ;im » « implicit none » )
    (« ;pr » « print » )
    (« ;fa » « .false. » )
    (« ;eq » « equivalence » )
    (« ;i » « integer » )
    (« ;bd » « block data » )
    (« ;po » « pointer » )
    (« ;as » « assignment » )
    (« ;pm » « program » )
    (« ;el » « else » )
    (« ;ba » « backspace » )
    (« ;wr » « write » )
    (« ;if » « interface » )
    (« ;su » « subroutine » )
    (« ;lo » « logical » )
    (« ;c » « character » )
    (« ;pi » « private » )
    (« ;dw » « do while » )
    (« ;al » « allocate » )
    (« ;ta » « target » )
    (« ;sq » « sequence » )
    (« ;wh » « where » )
    (« ;pa » « parameter » )
    (« ;op » « optional » )
    (« ;ab » « allocatable » )
    (« ;rw » « rewind » )
    (« ;se » « select » )
    (« ;di » « dimension » )
    (« ;cy » « cycle » )
    (« ;rt » « return » )
    (« ;cx » « complex » )
    (« ;df » « define » )
    (« ;de » « deallocate » )
    (« ;nu » « nullify » )
    (« ;cn » « contains » )
    (« ;cm » « common » )
    (« ;elw » « elsewhere » )
    (« ;cl » « close » )
    (« ;fu » « function » )
    (« ;rc » « recursive » )
    (« ;fo » « format » )
    (« ;fl » « forall » )
    (« ;na » « namelist » )
    (« ;t » « type » )
    ))

    Pour les abbréviations, on peut faire la même chose pour Latex, par exemple :

    (define-abbrev-table ‘LaTeX-mode-abbrev-table nil)
    (add-hook ‘LaTeX-mode-hook
    (lambda ()
    (setq local-abbrev-table LaTeX-mode-abbrev-table)
    (abbrev-mode 1)
    )
    )

    (define-abbrev-table ‘LaTeX-mode-abbrev-table
    ‘(
    (« ;a » « \\alpha »)
    (« ;be » « \\begin{equation}

    \\end{equation} »)
    ))

Les commentaires sont clos.