gpt4 book ai didi

emacs - nrepl.el 和 leiningen 2 默认命名空间?

转载 作者:行者123 更新时间:2023-12-04 01:00:49 25 4
gpt4 key购买 nike

启动并运行 Emacs/Clojure 环境,我现在遇到了我不确定是否正常的行为。特别是,当我启动一个 nREPL 并编译(C-c C-k)我的缓冲区时,我被放到了除了在 core.clj 文件顶部定义的命名空间之外的其他东西。我应该添加免责声明,我对 Clojure 和命名空间有点陌生,所以我对所有这些的理解可能是模糊的。我愿意接受能向我展示 Better Way™ 的固执己见的答案。

首先,关于我的设置:

我的 emacs 环境是 Cocoa Emacs 24,主要使用 Melpa 存储库中的 emacs 入门套件进行设置,并通过包管理器添加了 clojure 和 nrepl 包。

我的 leiningen 2 项目是使用 lein new test-clj 设置的.

我的 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"]])

我的 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)))))

我想我应该能够
  • 加载我的 core.clj 文件和插件 ( M-x nrepl-jack-in )
  • C-c C-k将缓冲区加载到 REPL
  • 输入 (show-shapefile) 并对我的聪明印象深刻

  • 实际上,我得到一个类似 clojure.lang.Compiler$CompilerException: java.lang.RuntimeException: Unable to resolve symbol: show-shapefile in this context, compiling:(NO_SOURCE_PATH:1) 的错误

    如果,从 REPL 我第一次输入(in-ns `test-clj.core),我就是金子。另外,如果我输入 (test-clj.core/show-shapefile) 我就设置好了。

    当我以逆时针方式加载 REPL 时,我会自动进入 test-clj.core 命名空间,这看起来非常方便。

    我的问题有两个方面:
  • 这是我看到的正确行为吗? (即我只是懒惰?)
  • 有没有办法放入这个命名空间(或者相反,告诉我这是一个愚蠢的想法)?
  • 最佳答案

    只需对您的工作流程进行一些更改:

  • 加载我的 core.clj 文件和插件(M-x nrepl-jack-in)
  • C-c C-l 加载文件
  • c-c M-n 将 repl 切换到命名空间
  • 输入 (show-shapefile) 并对我的聪明印象深刻

  • 第 2 步编译文件,这将创建命名空间
    第 3 步只比切换到 repl 并运行 in-ns

    关于emacs - nrepl.el 和 leiningen 2 默认命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12983160/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com