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)).

È stato utile?

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top