Emacs Lisp

Pour les articles homonymes, voir Emacs (homonymie).

Emacs Lisp
Logo de GNU Emacs

Emacs Lisp est un dialecte du langage de programmation Lisp, utilisé entre autres par les éditeurs de texte GNU Emacs et XEmacs (qui auront la dénomination commune d'Emacs dans cet article). Il est utilisé pour l'implémentation de la plupart des fonctionnalités d'édition standard d'Emacs, le reste étant écrit en C. Les utilisateurs d'Emacs écrivent habituellement du code en Emacs Lisp afin de personnaliser et rajouter des fonctionnalités à Emacs.

Emacs Lisp est parfois appelé « ELisp », ce qui crée un risque de confusion avec un autre dialecte du Lisp portant le même nom, mais n'ayant rien à voir. Au niveau des fonctionnalités, Emacs Lisp se rapproche des dialectes MacLisp et Common Lisp. Il supporte la programmation fonctionnelle et impérative, c'est donc un langage multi-paradigme. Le Lisp fut choisi comme langage d'extension pour ses nombreuses fonctionnalités, dont sa capacité à traiter les fonctions en tant que données.

Il y a plusieurs façons de personnaliser Emacs, l'utilisateur n'est pas obligé de savoir programmer en Emacs Lisp. En effet, depuis la version 20, GNU Emacs inclut Customize, qui permet aux utilisateurs de définir des variables via une interface graphique. Customize a cependant des fonctionnalités limitées, et est donc réservé à des modifications mineures du comportement d'Emacs. Les utilisateurs désireux de profiter au maximum de l'extensibilité d'Emacs écriront plutôt leur propre module en Emacs Lisp.

Exemple

Voici un exemple simple d'extension pour Emacs écrite en Emacs Lisp. Dans Emacs, la zone d'édition peut être séparée en plusieurs zones appelées « fenêtres », chacune d'entre elles peut afficher un buffer différent. Un buffer est, grosso modo, une zone de texte chargée en mémoire par Emacs à partir d'une source (un fichier, par exemple). Le buffer peut, lorsque l'utilisateur le demande, être sauvé dans un fichier.

La commande utilisateur pour ouvrir une nouvelle fenêtre verticale est C-x 2 (qui signifie « appuyer sur la touche x en maintenant la touche control appuyée, et ensuite appuyer sur la touche 2 »). Cette commande appelle une fonction Emacs Lisp, split-window-vertically. Normalement, lorsque la nouvelle fenêtre apparaît, elle affiche la même chose que le précédent buffer. Supposons que nous voulions qu'il affiche le contenu du prochain buffer disponible. Afin de réaliser cela, l'utilisateur écrit le code Emacs Lisp suivant, soit dans un fichier source, soit dans un buffer vide :

(defun my-split-window-function ()
  (interactive)
  (split-window-vertically)
  (set-window-buffer (next-window) (other-buffer)))

(global-set-key "\C-x2" 'my-split-window-function)

La première expression, (defun ...), définit une nouvelle fonction appelée my-split-window-function qui fait tout d'abord appel à la fonction split-window-vertically (l'ancienne fonction de séparation des fenêtres), puis indique à la nouvelle fenêtre d'afficher un autre buffer. La seconde expression, (global-set-key ...), ré-attribue le raccourci clavier « C-x 2 » à la nouvelle fonction.

Voir aussi

Articles connexes

Liens externes

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.