Uzyskanie działającego środowiska Emacs/Clojure, mam teraz działanie, którego nie jestem pewien. W szczególności, kiedy uruchamiam nREPL i kompiluję (C-c C-k) mój bufor, dostaję zrzut do czegoś innego niż przestrzeń nazw zdefiniowana na górze mojego pliku core.clj. Powinienem dodać zastrzeżenie, że jestem trochę nowy w Clojure i przestrzeniach nazw, więc moje zrozumienie tego wszystkiego może być mroczne. Jestem otwarty na pozytywne opinie, które pokazują mi Better Way ™.nrepl.el i leiningen 2 domyślna przestrzeń nazw?
pierwsze, o mojej konfiguracji:
Moje środowisko Emacs Cocoa Emacs 24, utworzonego głównie z zestawem startowym emacs z repozytorium Melpa, z pakietami Clojure i nrepl dodanych przez menedżera pakietów.
Mój projekt Leiningen 2 został skonfigurowany przy użyciu lein new test-clj
.
Moja project.clj:
(defproject test-clj "0.1.0-SNAPSHOT"
:description "A geospatial test app example mostly ripped off from http://datamangling.com/blog/2010/05/26/geotools-quickstart-in-clojure/"
:repositories {"osgeo-geotools" "http://download.osgeo.org/webdav/geotools"}
:url "FIXME"
:license {:name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"}
:dependencies [[org.clojure/clojure "1.4.0"]
[org.geotools/gt-main "8.2"]
[org.geotools/gt-shapefile "8.2"]
[org.geotools/gt-epsg-hsql "8.2"]
[org.geotools/gt-swing "8.2"]])
Moja core.clj:
(ns test-clj.core
(:import [org.geotools.data CachingFeatureSource FeatureSource FileDataStore FileDataStoreFinder])
(:import [org.geotools.map DefaultMapContext MapContext])
(:import [org.geotools.swing JMapFrame])
(:import [org.geotools.swing.data JFileDataStoreChooser]))
(defn show-shapefile
"Prompts the user for a shapefile and displays its content"
[]
(if-let [shapefile (JFileDataStoreChooser/showOpenFile "shp" nil)]
(let [fs (.getFeatureSource (FileDataStoreFinder/getDataStore shapefile))]
(doto (DefaultMapContext.)
(.setTitle "Quickstart")
(.addLayer fs nil)
(JMapFrame/showMap)))))
myślę powinienem móc
- obciążenia moje plik core.clj i Jack-in (
M-x nrepl-jack-in
) C-c C-k
załadować bufor do REPL- typu (show-Shapefile) i być pod wrażeniem mojego sprytu
W rzeczywistości, pojawia się błąd, który wygląda jak clojure.lang.Compiler$CompilerException: java.lang.RuntimeException: Unable to resolve symbol: show-shapefile in this context, compiling:(NO_SOURCE_PATH:1)
Jeśli z REPL I najpierw wpiszę (in-ns `test-clj.core), jestem złoty. Ponadto, jeśli piszę (test-clj.core/show-shapefile), jestem ustawiony.
Po załadowaniu REPL w kierunku przeciwnym do ruchu wskazówek zegara, automagicznie dostaję się do przestrzeni nazw test-clj.core, co wydaje się bardzo wygodne.
Moje pytanie czym jest dwojaki:
- Jest to poprawne zachowanie, które ja widzę? (po prostu jestem leniwy?)
- Czy istnieje sposób, aby zostać wpuszczonym w tę przestrzeń nazw (lub odwrotnie, powiedz mi, że to głupi pomysł)?
Ah, doskonale! Wygląda na to, że mogę dalej ładować mój bieżący bufor również za pomocą 'C-c C-k'. "C-c M-n" wydaje się być magią. Na marginesie: Jak uzyskać ładnie sformatowane skróty klawiaturowe emacs w komentarzach StackOverflow? – Peter
CtrlAltDel –
Danke! Mojego google-fu najwyraźniej brakowało w znalezieniu tych. – Peter