Documentation sur les prélèvements d'organes forcés en Chine.

De Quelques Outils Pour Acme (Plan9)

traduction: en
date: 2021-08-18
update: 2022-08-22

Note: en retard par rapport à la traduction anglaise.

Acme est un éditeur de texte/IDE développé par Rob Pike (Go, UTF-8, Sam, etc.) pour Plan9; l’éditeur est notamment disponible via Plan 9 from User Space sous UNIX.

Il se distingue d’autres éditeurs modernes par un ensemble de fonctionnalités réduit. L’outil est ici succinctement présenté, et sont introduits quelques scripts permettant d’en améliorer l’utilisation/la programmabilité.


Session acme

Session acme

Introduction

Les novices peuvent se référer à la démonstration (sept. 2012) de Russ Cox reproduite ici:

Ou se diriger vers la section ressources à la fin de cet article.

Brièvement, acme(1) est bien décrit comme un Environnement de Développement Intégrant. Malgré quelques limitations (e.g. difficile de déplacer des buffers automatiquement), il est suffisamment bien, léger, stable, intuitif pour les utilisateurs d’UNIX.

Outils

On propose quelques outils, décrits ci-après, ayant pour but de réduire le nombre de fenêtres, et de faciliter la programmabilité de l’éditeur, plus que ne le permette l’outillage par défaut (lib/acme.rc).

Fenêtre “+Buffer”

En pratique, avoir une seule fenêtre +Errors avec nettoyage automatique du contenu est généralement plus pratique que d’avoir une fenêtre +Errors par répertoire, sans nettoyage.

Note: le comportement par défaut reste raisonnable: autant être verbeux et laisser l’utilisateur filtrer à sa convenance.

Par convention, on appelle cette fenêtre la fenêtre +Buffer, étant la seule dont le nom est suffixé par +Buffer. Son accès est automatiquement géré par la commande Getids, décrite ci-dessous.

La tagline de cette fenêtre est de plus utilisée pour lancer des commandes “globales”, comme celles permettant la gestion de sessions, aussi décrites plus bas.

Getids

Getids est un script clef, sur lequel sont construits la plupart des autres scripts. Il permet de cibler facilement:

Il génère une liste d’identifiants de fenêtres, un par ligne, à partir de soit:

Six kakis, 13e siècle, dynastie Song, actuellement exposée au Daitoku-ji, Kyoto, Japon

Six kakis, 13e siècle, dynastie Song, actuellement exposée au Daitoku-ji, Kyoto, Japon par Muqi (c. 1210 – c. 1269) 牧谿 via wikimedia.orgCC-BY-SA-3.0

En guise d’exemple, un script comme Do qui exécute une commande sur la tagline d’une fenêtre, permettant ainsi de chaîner des commandes acme(1), prend un argument optionnel transmis à Getids:

# Nettoye la fenêtre courante
(tagline)$ Do 'Edit ,d'

# Nettoye le contenu de toutes les fenêtres +Errors
(sh|tagline)$ Do 'Edit ,d' '\+Errors$'

# Write est utilisé pour écrire des données dans les fichiers
# spéciaux associés au buffer (9P), similaire à winwrite() de
# lib/acme.rc.
#
# Ici, on écrit & ferme toutes les fenêtre dont le nom comporte
# /project42/, et on nettoye le contenu de +Buffer, la créant
# si nécessaire
(sh|tagline)$ Write ctl put '\/project42\/'    && \
              Write ctl delete '\/project42\/' && \
              Do 'Edit ,d' -a

XDump, XLoad, Switch (sessions)

À nouveau avec pour but de réduire le nombre de fenêtres, trois scripts sont fournis, permettant de charger/sauvegarder l’état actuel des fenêtres:

# Sauvegarde tous les fichiers ouverts, et sauvegarde
# l'état actuel des fenêtres dans $HOME/acme.dumps/project42.dump
(sh|tagline)$ XPutall && XDump project42 # extension .dump optionnelle

# Charge l'état décrit par $HOME/acme.dumps/projects42.dump,
# supprimant toutes les fenêtres existantes au préalable
(sh|tagline)$ XLoad project42.dump       # extension .dump optionnelle

# Sauvegarde l'état courant sous $HOME/acme.dumps/project42.dump et
# charge celui décrit par $HOME/acme.dumps/website.dump
(sh|tagline)$ Switch project42 website   # extension .dump optionnelle

Plus

Ces outils et d’autres sont documentés extensivement sur github.

Ressources

Voir aussi quelques tentatives de ré-écritures “modernes”:


Commentaires

Par email, à mathieu.bivert chez:

email