79 votes

Conseils pour apprendre Elisp ?

J’ai été en utilisant emacs depuis des années et je garde un sens obtenir une meilleure compréhension du elisp, donc je peux personnaliser l’éditeur. Un seul problème que j’ai trouvé, c’est que c’est une tâche assez ardue pour débuter avec.

J’ai une connaissance de base de la syntaxe de LISP, mais y at-il des articles là-bas pour aider quelqu'un à se lancer ? Peut-être un tutoriel sur la programmation, ou quelques suggestions de choses utiles et simples à mettre en œuvre ?

79voto

Trey Jackson Points 49816

Emacs est grande et il est tout à fait compréhensible de se sentir intimidé. Probablement le chemin de moindre résistance pour apprendre à programmer Emacs lisp est de comprendre certaines des tâches que vous voulez vraiment faire. Une fois c'est personnel, la motivation va être beaucoup plus élevé.

Cela étant dit, peut-être que vous voulez écrire un navigateur web... Voici quelques idées de choses simples à mettre en œuvre. La plupart sont déjà prévues (par emacs ou d'autres paquets), mais d'apprendre à le faire entraînera l'apprentissage de la façon d'apprendre Emacs lisp.


Note:

Des Solutions pour l'exemple, les problèmes peuvent être trouvés dans cette autre réponse.


charge-mon préféré-fichier

  • une fonction qui, lorsqu'on les appelle des charges jusqu'à votre favori (codé en dur) fichier. par exemple, votre .emacs fichier.

cycle spécial-fichiers

  • une fonction qui, lorsqu'il est appelé à plusieurs reprises, de cycles à travers une liste des fichiers de votre choix (par exemple .alias, weeklystatus, trackerlist)

comte-chaîne-matchs

  • retourne le nombre d'occurrences de la CHAÎNE de caractères dans le tampon suivant le point de

recharger-dot-emacs

  • invite à enregistrer .emacs fichier (si nécessaire) et de charger le fichier

bande-fuite-blanc

  • supprimer les espaces en fin de ligne dans l'ensemble de la mémoire tampon

insérez-code-modèle

  • une fonction qui insère un modèle dans le tampon courant par exemple, un modèle de fichier d'en-tête, ou un .rpc fichier, ou un fichier perl
  • les points de bonus pour fournir un mécanisme pour le faire suffisamment général pour l'utiliser afin qu'il fonctionne différemment selon le mode approprié et/ou l'extension de fichier
  • conseils : la variable " grands-mode, listes d'association
  • plus de points de bonus, le crochet vers le haut de sorte que cette fonction est automatiquement appelée quand une nouvelle (vide) de l'ouverture du fichier

insérez-checkin-modèle

  • une fonction qui vous invite pour les différents champs d'un enregistrement de la demande, en donnant les valeurs par défaut
  • les points de bonus pour la bonne mise en retrait de la liste des fichiers

chaîne à remplacer

  • prendre trois arguments de la chaîne, remplacez toutes les occurrences de la première par la seconde à la troisième chaîne. De retour de la chaîne nouvellement créée.

Emacs documentation est assez complet, voici quelques précieux références:

C-h i m elisp RET           (emacs lisp info page)
M-x find-function           (show the source for the given function)
C-h C-h                     (list the help topics)
C-h f interactive RET       (read documentation for this, it's what tells Emacs the defun is a command)


Et voici quelques Emacs lisp routines que vous trouverez vous avez besoin pour mettre en œuvre les idées ci-dessus:

Mouvement/Position

forward-line
forward-char
goto-char
beginning-of-line
end-of-line
point
mark

Tampon liées

set-buffer
current-buffer
buffer-name

D'autres

search-forward
match-beginning
match-end
match-string
save-excursion
y-or-n-p
file-exists-p
find-file-noselect
copy-region-as-kill

La Lecture De La Source

En outre, si vous aimez un morceau particulier de fonctionnalité (par exemple, indent-region, column-number-mode, rot13-region), d'aller la chercher à la source (à l'aide d' M-x find-function). Le fait que vous savez déjà ce que la fonction ne vous aidera un peu dans la détermination de la façon dont elle est ce qu'elle fait. Commencer petit et de passer à des choses plus grandes, comme vous acquérir de la confiance. Les Chances sont que vous allez apprendre quelque chose de nouveau à chaque fonction, vous examiner.

29voto

Bart Points 2690

Ce message par Steve Yegge est un apprêt grand.

26voto

Noufal Ibrahim Points 32200

Ne peut croire que personne n’a mentionné ce qui est le tutoriel officiel de GNU pour Elisp. C’est une lecture agréable.

23voto

Trey Jackson Points 49816

Comme demandé, voici quelques "réponses" à mon exemple des exercices énumérés ci-dessus. Puissiez-vous trouver instructif (cliquez sur le problème de nom pour suivre le lien de la solution):

Les extraits de code ont été testés sur Emacs 23.1.

Il y a évidemment beaucoup de solutions sont possibles, ce ne sont pas forcément beaux exemples d'emacs lisp (la chaîne à remplacer a deux solutions, l'une plutôt moche).

12voto

Ray Vega Points 30187

Emacs Lisp tutoriel de XAH est une ressource très agréable pour en obtenir un a commencé sur l’apprentissage et à l’aide de Elisp. Elle commence par les bases et fournit des exemples simples et plus avance du code Elisp.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X