Comment puis-je commencer à apprendre Emacs Lisp?


39

Contexte:

Je suis principalement un utilisateur vi et je me convertis à Emacs.

Passé les bases et utilisez-le maintenant pour écrire du code en C et certains Python avec des projets de conversion R.

J'ai écrit LISP (Common) pendant des années, il y a plus de deux décennies, lorsque j'étais au cycle supérieur, mais je suis maintenant tombé gravement à bout (je peux écrire bonjour le monde, mais c'est tout.).

Question:

Que recommanderiez-vous à un gars de ma position pour apprendre l’environnement LISP d’Emacs et commencer à pirater Emacs?

Y a-t-il des livres, des blogs, des ressources que je devrais lire, des exercices que je devrais faire?

Réponses:


11

D'après mon expérience, le tutoriel inclus sur Emacs Lisp n'était pas très utile (j'ai essayé deux fois au fil des ans et j'ai échoué). Au lieu de cela, j'ai finalement utilisé la référence Lisp Emacs incluse.

Qu'est-ce qui a finalement fonctionné:

Réalisez qu'il y a deux aspects à Emacs Lisp: le langage de base lui-même et l'interaction avec Emacs. Séparez ces deux choses dans votre esprit. Concentrez-vous d'abord sur l'ancien (ne devriez pas être trop dur comme vous avez appris Lisp dans le passé). Utilisez des sites comme Excercism pour pratiquer.

Une fois que vous maîtrisez les bases (boucles, fonctions, variables, conditions, etc.), passez aux aspects qui impliquent Emacs lui-même (changer de texte, changer de tampon, etc.). C'est vaste et vous risquez de vous perdre dans une mer de détails. Il y a quelques choses que vous devriez vraiment bien comprendre, car vous les utiliserez souvent. Elles sont:

  • interactif
  • sauvegarde-excursion
  • save-restriction
  • crochets
  • fonctions de conseil
  • avec tampon de courant

Une fois que vous avez compris cela, au lieu de passer tout votre temps à lire la référence ELisp, pensez aux problèmes simples que vous avez avec Emacs que vous voulez écrire et essayez de les résoudre avec Elisp. Vous aurez probablement besoin d'aide pour certaines étapes, et c'est là que Google peut vous aider.

Exemples de problèmes que j'ai résolus pour pratiquer mon Elisp:

  • Lorsque vous utilisez org-capture et que vous écrivez du texte sur la dernière ligne du tampon de capture, il ne met pas de nouvelle ligne à la fin. Par conséquent, si j'avais un titre après la position de capture, ce titre ne serait plus un titre. . Le correctif consistait à créer un point d'ancrage qui vérifiait l'existence de nouvelles lignes et, dans le cas contraire, en ajoutait un à la fin de la capture.

  • Lorsque je capture et refasse en une étape, cela ne sauvegarde pas le fichier dans lequel l'entrée a été rediffusé. Mais si je capture sans refiler, c'est le cas. J'ai corrigé cette incohérence.

  • Lors de la rédaction de procès-verbaux au cours d'une réunion (dans un fichier org), si un TODO apparaît, je souhaite effectuer une capture qui recherchera un titre appelé TODO (sous le titre de niveau supérieur dans lequel je me trouve) et place le TODO dans. Là. Chaque réunion a son propre titre TODO, qui devrait être celui de la réunion en cours dans le fichier. Cela impliquait l'écriture d'une fonction qui monte de l'arborescence jusqu'au niveau supérieur et cherche un enfant appelé TODOs.

  • Élimine tous les tampons d'un certain mode (une fonction interne peut déjà le faire, mais je ne le savais pas).

Enfin, assurez-vous de connaître les associations de touches suivantes:

  • Cx Ce (évaluer l'expression)
  • Ch v (recherche le sens et la valeur d'une variable)
  • Ch f (consultez la description d'une fonction intégrée).

33

Quelle belle question! Voici le chemin que j'ai pris:

Étape 0: Lisez le didacticiel Emacs

Lisez le tutoriel Emacs avant toute chose. On dirait que tu as fait ça. Bien sur toi! Cependant, pour tous ceux qui y viendront plus tard, c'est l'endroit idéal pour commencer votre périple Emacs. Il existe de nombreux articles de blogues trompeurs. Ils compliquent les choses. Emacs facilite les choses:

  1. Démarrer Emacs
  2. presse <RET>

Vous pouvez également y accéder via Ctrl + h t, ou C-h ten notation Emacs.

Le didacticiel présente les concepts de base d’Emacs, clarifie la terminologie historique et vous permet de commencer en moins de 30 minutes. Cela ouvre également la voie à la prochaine étape.

Ouvrez Emacs.  Appuyez sur Entrée.  C'est si facile!

Étape 1: Lire "Introduction à la programmation dans Emacs Lisp"

La prochaine étape consiste à lire Une introduction à la programmation dans Emacs Lisp . Je ne saurais trop recommander ce livre. c'est si bien écrit! Il est livré avec la plupart des installations Emacs 1 . Appuyez simplement sur C-h iet sélectionnez-le dans le menu. Vous pouvez aussi y aller directement via C-h i m Emacs Lisp Intro.

La préface déclare,

Ce texte est écrit comme une introduction élémentaire pour les personnes qui ne sont pas des programmeurs.

Il devrait dire "pour les personnes qui ne sont pas des programmeurs Lisp". Lisp est un peu différent des autres langues, il vaut donc la peine d'être lu si vous ne connaissez pas Lisp. L'auteur a un style accessible et passe en revue de nombreux exemples. Il m'a fallu environ une semaine pour travailler.

Étape 1.5: Conseils de développement Lisp d’Emacs avec John Wiegley

À la fin de 2015, John est le responsable du projet Emacs . Sacha Chua fait un excellent entretien avec lui ici où John va sur les bases de Lisp, l'environnement de développement, et fournit beaucoup de bons conseils.

Étape 2: Lisez le code de conduite des personnes (CPP)

2a. Lire le code source

Comme Emacs est "l'éditeur d'affichage en temps réel extensible, personnalisable, auto-documentant", tout le code source est inclus. Apprenez à utiliser les fonctions d'aide, C-h fpour une fonction et C-h vpour une variable. Il y a toujours un lien vers le code source:

Cliquez sur le lien du code source pour voir le code source!

2b. Lire tous les init.el's

Beaucoup de gens suivent leurs init.elfichiers dans Git ou Mercurial. Cherchez-les. Une astuce consiste à cliquer sur le profil des personnes sur StackOverflow, en particulier emacs.stackexchange.com :

Mec est un utilisateur puissant!

Ils ont souvent des liens vers leur site Web personnel ou GitHub:

Payer la saleté!

Les repos sont appelés dotemacsou dotfilessont assez courants. Avec le temps, vous saurez à quoi ressemble un bon code et à quoi ressemble un code incorrect. Vous apprendrez également les grands noms, comme ceux de Xah , Sasha Chua , Binchen , Magnar Sveen , Abo-Abo et bien d'autres. Il y a tellement de gens à apprendre!

Étape 3: Pirater Emacs

Mettez-vous au défi d'écrire les fonctionnalités souhaitées. Ne jamais copier le code à l'aveuglette; prenez toujours le temps de le comprendre. Si vous ne le comprenez pas, ne l'utilisez pas! Lorsque vous prenez le temps de comprendre un morceau de code, en plus d'apprendre quelque chose de nouveau, vous réfléchissez souvent aux moyens de l'améliorer pour votre cas d'utilisation particulier. C'est une opportunité à pirater! Après tout, c'est pour ça que vous init.elêtes! Faire des erreurs, casser des choses, apprendre à déboguer. Vous constaterez qu'Emacs étant écrit en Elisp, le développement est un délice.

Étape 4: Posez des questions sur emacs.stackexchange.com

J'ai découvert que la communauté Emacs sur StackExchange adorait une bonne question Elisp. Alors, piratez avec confiance que d'autres personnes apprécieront vos efforts pour apprendre.

Étape 5: répondez aux questions sur emacs.stackexchange.com

Rien ne clarifie votre compréhension comme d'essayer d'expliquer quelque chose. En parcourant la page principale, vous trouverez également des réponses à des questions que vous ne saviez pas que vous aviez.

Conclusion

Avec le temps, vous serez capable de générer des solutions plus rapidement et de répondre aux questions des autres. Comme toute programmation, cela peut être frustrant. Cependant, souvenez-vous de vous juger aujourd'hui contre vous-même hier. Certaines personnes piratent sur Emacs depuis littéralement 30 ans! La plupart du temps, vous constaterez qu'Emacs est un plaisir de travailler avec et que la liberté qu'il vous procure est une source d'inspiration.

Bonne piratage! :)

PS: Découvrez le paquet diabolique .


1 Certaines installations ne viennent pas avec. Les utilisateurs de Debian, par exemple, doivent l’installer séparément. C'est un peu bête , mais c'est stocké dans le dépôt non-libre . Ajoutez un dépôt non libre à /etc/apt/sources.listen ajoutant non-freeà la fin de chaque entrée:

deb http://http.us.debian.org/debian stable main contrib non-free

1
se sent comme je viens de visiter quora
user3496846

10

Je recommande le "Emacs Lisp Intro".

Le "Intro Emacs Lisp" est peut-être déjà disponible au format info dans votre Emacs. Essayez C-h i m Emacs Lisp Intro RETou évaluez (info "(eintr) Top")dans Emacs.

Si cela échoue, recherchez "Emacs Lisp Intro" sur le Web.


7
  1. Commencez par la page Wiki d’ Emacs Découvrez Emacs Lisp .

    Non pas que cette page elle-même vous apprenne Emacs Lisp. Il indiquera plutôt des ressources d’apprentissage - exactement ce que vous recherchez ici , avec votre question. De nombreux utilisateurs y ont contribué et l’ont édité au fil des ans. Cela présente des avantages et des inconvénients par rapport au blog d’un utilisateur. La qualité des suggestions y est bien sûr diverse, en raison de la variété des entrées.

  2. Au-delà de tout ce que d’autres ont dit, en commençant par la documentation intégrée d’Emacs:

    • Le manuel Elisp - principalement une référence, mais quelques bonnes indications d'utilisation et informations conceptuelles aussi. Il est intégré à Emacs: C-h ichoisissez ensuite le manuel Elisp.

    • The Emacs Lisp Intro - introduction pas à pas à Lisp et à Emacs Lisp. Également intégré à Emacs et disponible auprès de C-h i.

  3. Puisque vous avez utilisé Common Lisp, il sera très facile de récupérer Emacs Lisp. Considérez-vous chanceux à ce sujet.

    Si vous aviez utilisé Common Lisp (ou Zeta Lisp ou autre) sur une machine Lisp, l'expérience serait assez similaire. Vous pouvez penser à Emacs comme (entre autres choses), un excellent environnement Lisp. Vous pouvez passer de zéro à 60 en un rien de temps, tout en apprenant.

  4. S'amuser!


2

Pour faire un rappel sur Lisp, je recommande vivement les trois premiers chapitres de Peter Norvigs, Paradigmes de la programmation de l'intelligence artificielle . Ceux-ci vous donnent une bonne et rapide introduction à Lisp qui vous remettra sur les rails rapidement.

Pour noobs Il y a du Lisp comme une introduction au calcul symbolique qui vous enseigne les mêmes concepts , mais à un rythme beaucoup plus faible.

Les deux livres sont disponibles en ligne gratuitement.

Après avoir parcouru l’un des points ci-dessus, vous pouvez lire tous les articles marqués Elisp sur nullprogram.com et consulter le guide de lecture de masteringemacs.org . Pour en savoir plus sur les pièges courants, lire les questions principales ici vous aidera. Pour des problèmes spécifiques, effectuez une recherche sur ce site, sur rosettacode ou sur votre moteur de recherche préféré.

Une fois familiarisé avec les bases, les manuels d’information répondent généralement à la plupart des questions en suspens lors du piratage d’Emacs.


1

Puisque vous avez une formation en Common Lisp et que vous avez "dépassé les bases", inutile de vous perdre dans "Introduction à la programmation dans Emacs Lisp".

Ce que vous pouvez faire tout de suite (je n’ai pas de formation en CL et cela a fonctionné pour moi) est:

1) Trouvez un mode que vous utilisez et essayez d’ajouter des fonctions. Vous trouverez de l’aide dans le manuel Lisp d’Emacs.

2) écrivez votre propre fichier personnalisé avec vos propres fonctions simples, ici encore utilisez la référence Emacs Lisp

La liste de help-gnu-emacs est extrêmement utile.


1

Que recommanderiez-vous à un gars de ma position pour apprendre l’environnement LISP d’Emacs et commencer à pirater Emacs?

Je ne pense vraiment pas que vous ayez besoin de lire quelque chose de spécifique sur emacs lisp. Ce n'est un secret pour personne que si vous voulez faire quelque chose dans Emacs, il y a de fortes chances que vous ayez juste à trouver la bonne commande ou que quelqu'un ait déjà écrit le code et qu'il réside maintenant quelque part sur une page wiki, ou github, ou a été transformé en un plugin. . En copiant-collant ce code et en le lisant , vous aurez appris une bonne part du lisp d’Emacs au moment même où vous êtes quelque peu satisfait de votre .emacs.

Si vous souhaitez avoir des idées sur la façon de personnaliser Emacs, les configurations personnalisées par d'autres personnes peuvent être une bonne source de sagesse. Vous trouverez ici une liste sélectionnée de ces configurations . Bien qu'en réalité, votre propre vision fonctionne mieux et que visiter le .emacs d'autres personnes ne soit généralement justifié que si vous souhaitez obtenir des réponses à certaines questions (par exemple, comment structurer mon code / mes packages?) Ou un code copié pour votre objectif spécifique.

La navigation sur MELPA m'a permis d'installer et d'essayer une douzaine de paquets.

Si vous voulez développer un plugin, j'ai constaté que la lecture du code d'un plugin particulier de votre choix peut vous permettre de démarrer assez rapidement.

Depuis que vous utilisez vi, vérifiez le mauvais mode , cela a très bien fonctionné pour moi. Je recommanderais également la barre avec helm-apropos(ou juste apropossi vous ne voulez pas helm) la commande pour faciliter votre voyage.

Mon conseil est donc d'arriver au point de personnalisation tout de suite et vous apprendrez tout ce dont vous avez besoin pendant vos déplacements. Surtout que vous avez piraté lisp auparavant, il y a longtemps ou pas, et parce qu'apprendre elisp est, à ma connaissance, un moyen de parvenir à vos fins, qui consiste à personnaliser emacs.


1

Le titre Elisp sur l’exercice physique est également un moyen amusant d’améliorer vos compétences. Les exercices sont plus axés sur elisp que sur Emacs, mais couvrent un large éventail de bases, telles que les expressions régulières, les structures de données, les mathématiques, etc.


Pouvez-vous améliorer cette référence (par exemple, fournir un lien)? Pouvez-vous s'il vous plaît résumer ce que l'on y trouve (des exercices d'une certaine sorte, semble-t-il)?
Drew le

exercism.io C'est un site où vous pouvez choisir une langue et résoudre divers problèmes, et voir les solutions des autres. J'ai trouvé que parcourir les solutions des autres personnes pour résoudre un problème que vous venez de résoudre est un bon moyen d'apprendre de nouvelles fonctionnalités.
Beetle B.

0

Il me semble que la réponse de Loren Ipsum couvre assez bien la question.

https://emacs.stackexchange.com/a/47320/21433

J'ajouterais simplement que je suppose que vous connaissez les bases de Lisp. Cela vous aiderait, mais ce n'est pas nécessaire (j'y reviendrai).

Une façon d'apprendre consiste simplement à pirater ou à modifier un mode / une extension existante. Je l'ai appris en 93 en piratant le fichier en mode langue Ada. Ce fut l'une des expériences les plus amusantes que j'ai vécues à l'université.

Ainsi, vous pouvez le faire avec le langage de votre choix, par exemple un mode Java, un mode Lisp ou même un fichier en mode Elisp.

Changez-le, ajoutez des macros, etc. C'est comme ça que je l'ai fait.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.