clojure.contrib di melma ed inferiore-lisp-programma di domanda
Domanda
Ho quanto segue dal repl melma (nessuna funzione clojure.contib trovati):
M-X slime
user=> (:require 'clojure.contrib.string)
nil
user=> (doc clojure.contrib.string/blank?)
java.lang.Exception: Unable to resolve var: clojure.contrib.string/blank? in this context (NO_SOURCE_FILE:10)
E il seguente quando si inizia clojure da console (ma qui tutto è stato trovato OK):
adr@~/clojure/cloj-1.2$ java -cp /home/adr/clojure/cloj-1.2/clojure.jar:/home/adr/clojure/cloj-1.2/clojure-contrib.jar -server clojure.main
user=> (:require 'clojure.contrib.string)
nil
user=> (doc clojure.contrib.string/blank?)
-------------------------
clojure.contrib.string/blank?
([s])
True if s is nil, empty, or contains only whitespace.
nil
Nei miei .emacs ho il seguente:
(setq inferior-lisp-program "java -cp /home/adr/clojure/cloj-1.2/clojure.jar:/home/adr/clojure/cloj-1.2/clojure-contrib.jar -server clojure.main")
I miei vasi Clojure (1,2) sono a '/home/adr/clojure/cloj-1.2'.
I; m un principiante con emacs, state seguendo alcuni tutorial. Da qualche tempo ho cercato di utilizzare la libreria clojure.contrib da Emacs, ma "M-X melma" non trova clojure.contrib. Si prega, aiuto
Modifica : se che avrebbe aiutato, ora mi sega che quando si utilizza M-X melma c'è un messaggio:
(progn (load "/home/adr/.emacs.d/elpa/slime-20100404/swank-loader.lisp" :verbose t) (funcall (read-from-string "swank-loader:init")) (funcall (read-from-string "swank:start-server") "/tmp/slime.4493" :coding-system "iso-latin-1-unix"))
Clojure 1.2.0
user=> java.lang.Exception: Unable to resolve symbol: progn in this context (NO_SOURCE_FILE:1)
Edit2: , ma non c'è tale messaggio di errore se uso MX melma-connect dopo aver avviato un "Lein Swank" in una directory (sebbene anche a partire da "MX melma-connect" ci sono no librerie clojure-contrib trovano nel REPL (anche se vengono scaricati da Leiningen come dipendenza)).
Soluzione 2
Mi sembra che stavo usando il modo sbagliato di "richiedere" biblioteche del REPL (a causa di mia inesperienza con clojure); quando si utilizza una sintassi come ad esempio:
user=> (require 'clojure.contrib.string)
nil
user=> (clojure.contrib.string/blank? "asd")
false
tutte le librerie sono stati trovati su OK (non importa se si utilizza "M-X melma" per un REPL non Swank o "M-X melma-Connect" per un server Swank). Così è stato tutto il mio errore (ho trovato suggerimenti circa il mio errore in questa risposta StackOverflow: Perché ricevo un errore quando ho eseguito (usa 'clojure.contrib.repl-utils)? )
Altri suggerimenti
Questa riga:
(progn (load "/home/adr/.emacs.d/elpa/slime-20100404/swank-loader.lisp" :verbose t) (funcall (read-from-string "swank-loader:init")) (funcall (read-from-string "swank:start-server") "/tmp/slime.4493" :coding-system "iso-latin-1-unix"))
è Common Lisp, non Clojure, ma dal momento che insieme inferior-lisp-program
a Clojure, slime
non può avviare un server swank
.
Si vedano le seguenti sezioni Swank-clojure progetto :
- Collegamento di melma
- Embedding
- Swank-clojure.el
La funzionalità che si desidera è probabilmente nel Swank-clojure.el , ma non è raccomandato più.
Come si sta già utilizzando ELPA:
add-to-list 'package-archives
'("technomancy" . "http://repo.technomancy.us/emacs/") t)
M-x package-install ;(slime-repl)
M-x slime-connect