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}”)
    ))

Comments are closed.