2016-04-17 5 views
3

Ich schreibe Emacs Code lispeln wie folgt:Lese-Minipuffer Funktion Eingabestring mit "Interpunktion

#!/usr/bin/emacs --script 
(setq input (read-minibuffer "please input your name:")) 
(message "%s" input) 

und dann verwende ich diesen Code Standardeingabe zu testen:

./test.el 
please input your name:hello 
hello 

dies für die in Ordnung ist . erste Test Aber wenn ich String hello,world auf Standardeingabe setzen, kommt es Fehler:

please input your name:hello,world 
Trailing garbage following expression 

Und dann habe ich strin g "hello,world" der Standardeingabe, es passiert:

please input your name:"hello,world" 
hello,world 

Dann wissen ich will, wie soll ich das tun kann, ohne " Interpunktion die Eingabezeichenfolge erhalten. Ich möchte nur hello,world eingeben, anstatt "hello,world". Danke

Antwort

2

Die Funktion read-minibuffer erwartet, dass der Benutzer ein Lisp-Objekt eingibt. Wenn Sie hello eingeben, wird ein Symbol zurückgegeben. Wenn Sie "hello,world" eingeben, wird eine Zeichenfolge zurückgegeben.

Wahrscheinlich möchten Sie stattdessen die Funktion read-from-minibuffer. Es gibt zurück, was der Benutzer als Zeichenfolge eingegeben hat, ohne zu versuchen, es in irgendeiner Weise zu interpretieren.