2011-06-03 2 views
3

Existe-t-il un moyen d'entrée multiligne dans EShell? Lorsque je veux faire une définition de fonction rapide sur la ligne de commande d'EShell, cela ne fonctionne pas vraiment. J'ai essayé d'utiliser des sauts de ligne explicites (\ n), ainsi que des guillemets simples ('') et des guillemets doubles (""), mais sans succès.Entrée multiligne dans EShell

Lorsque j'écris une nouvelle ligne \n et appuyez sur Entrée (le point est à la position *) Je reçois un message d'erreur et une nouvelle invite Eshell.

$ (def foo (x y) \n *) 
Symbol's function definition is void: def 

Lorsque j'utilise C-q C-j et appuyez sur Entrée (point est à la position *) Je reçois le même message d'erreur et une nouvelle invite de eshell.

$ 
(def foo (x y) *) 
Symbol's function definition is void: def 
+0

NTEmacs 23.3.1 me semble parfaitement heureux d'utiliser pour les sauts de ligne dans une définition de fonction dans eshell. Qu'est-ce que "ça ne marche pas vraiment"? – phils

+0

Bon, ça l'explique. Voir la réponse ci-dessous. – phils

Répondre

0

Vous devez laisser une parenthèse ouverte pour empêcher Eshell d'évaluer l'entrée prématurément. En outre, comme indiqué par phils, def n'est pas défini en stock Elisp; vous voulez probablement defun.

+0

Oui, cela résout le problème. J'utilise une paire de modes mineurs (ou paredit) qui me donne aussi la parenthèse de fermeture aussi. Lorsque je l'efface, l'entrée multiligne fonctionne en appuyant simplement sur Entrée (pas d'explication dans le texte). Merci. – Thorsten