我可以同时在emacs中使用常见的lisp和Clojure吗?我想将每个lisp-REPL放在自己的缓冲区中,如果我这样做,我怎么能控制哪个缓冲区将其数据发送到哪个lisp?
我想在REPL的slime中使用clojure.contrib.trace命名空间中的函数.如何让粘液自动加载?一个相关的问题,如何将特定的命名空间添加到正在运行的repl中?
在clojure.contrib API上,它描述了这样的用法:
(ns my-namespace
(:require clojure.contrib.trace))
Run Code Online (Sandbox Code Playgroud)
但是将其添加到我的代码会导致无法使用跟踪命名空间中的任何函数加载"无法解析符号"错误的文件.
我使用leiningen'lein swank'启动ServerSocket,project.clj文件看起来像这样
(defproject test-project "0.1.0"
:description "Connect 4 Agent written in Clojure"
:dependencies [[org.clojure/clojure "1.2.0-master-SNAPSHOT"]
[org.clojure/clojure-contrib "1.2.0-SNAPSHOT"]]
:dev-dependencies [[leiningen/lein-swank "1.2.0-SNAPSHOT"]
[swank-clojure "1.2.0"]])
Run Code Online (Sandbox Code Playgroud)
一切似乎都是最新的,即'lein deps'不会产生任何变化.那么这是什么一回事?
所以我在emacs工作,突然,slime-repl sbcl说文本是只读的.那很好,因为现在我不能输入任何东西.我该如何解决?
当我退出Emacs时,我有一个关于如何"优雅地退出SLIME"的问题.这是我的配置文件的相关部分:
;; SLIME configuration
(setq inferior-lisp-program "/usr/local/bin/sbcl")
(add-to-list 'load-path "~/Scripts/slime/")
(require 'slime)
(slime-setup)
;; configure SLIME to gracefully quit when emacs
;; terminates
(defun slime-smart-quit ()
(interactive)
(when (slime-connected-p)
(if (equal (slime-machine-instance) "Gregory-Gelfonds-MacBook-Pro.local")
(slime-quit-lisp)
(slime-disconnect)))
(slime-kill-all-buffers))
(add-hook 'kill-emacs-hook 'slime-smart-quit)
Run Code Online (Sandbox Code Playgroud)
据我所知,每当我退出Emacs时,这应该会自动杀死SLIME及其关联的进程.但是,每次我退出时,我仍然得到提示:
Proc Status Buffer Command
---- ------ ------ -------
SLIME Lisp open *cl-connection* (network stream connection to 127.0.0.1)
inferior-lisp run *inferior-lisp* /usr/local/bin/sbcl
Active processes exist; kill them and exit anyway? (yes or no)
Run Code Online (Sandbox Code Playgroud)
有人可以从我的配置中找到我缺少的东西吗?
提前致谢.
这对你来说是一个双重问题,非常棒的Stacked Overflow Wizards.
如何在与Clojure交谈时将emacs/slime/swank设置为使用UTF-8,或者在命令行REPL中使用UTF-8?目前我无法向swank-clojure发送任何非罗马字符,并且使用命令行REPL会使事情变得糟糕.
在拉丁文本上做正则表达式真的很容易:
(re-seq#"[\ w] +""日语句子真的不需要空格吗?")
但是,如果我有一些日本人怎么办?我认为这会起作用,但我无法测试它:
(re-seq #"[(?u)\w]+" "??? ? ?? ? ? ???? ? ?? ?? ??? ???")
Run Code Online (Sandbox Code Playgroud)
如果我们必须使用字典来查找单词中断,或者自己找到一个只有片假名的单词,那就更难了:
(re-seq #"[?????-?]" "???????????????????????")
Run Code Online (Sandbox Code Playgroud)
谢谢!
到目前为止我使用了Aquamacs,我需要使用SLIME安装和运行Clojure.我用谷歌搜索了一些方法在Aquamacs的SLIME上使用Clojure,但没有成功.
我尝试使用Mac OS X Emacs,并按照我可以使其工作的步骤.我的意思是,我可以用SLIME运行Clojure.
步骤1)安装ESK.
.emacs.d目录中.emacs并重新启动
(when
(load
(expand-file-name "~/.emacs.d/package.el"))
(package-initialize))
步骤2)使用ELPA安装
.emacs并重新启动;; clojure mode (add-to-list 'load-path "/Users/smcho/.emacs.d/elpa/clojure-mode-1.7.1") (require 'clojure-mode-autoloads) (add-to-list 'load-path "/Users/smcho/.emacs.d/elpa/clojure-test-mode-1.4") (require 'clojure-test-mode-autoloads) ;; slime ;(setq inferior-lisp-program "/Users/smcho/bin/clojure") (add-to-list 'load-path "/Users/smcho/.emacs.d/elpa/slime-20100404") (require 'slime-autoloads) (add-to-list 'load-path "/Users/smcho/.emacs.d/elpa/slime-repl-20100404") (require 'slime-repl-autoloads) ;; swank-clojure …
在某些类型的代码中,相对容易在不吹动堆栈的情况下导致无限循环.使用clojure-test测试这种性质的代码时,有没有办法在不重启swank服务器的情况下中止当前运行的测试?
目前我的工作流程涉及到
$ lein swank
Run Code Online (Sandbox Code Playgroud)
使用emacs连接到swank slime-connect,然后切换到测试,执行C-c C-,,测试运行直到无限循环,然后返回,但是一个cpu仍然在测试中流失.我发现阻止这种情况的唯一方法是重新启动lein swank,但似乎这是一个相对常见的问题?谁有更好的解决方案?
我正在尝试安装SLIME.我下载了压缩包,根据README文件,我不得不把这段代码放在.emacs文件中:
(add-to-list 'load-path "~/hacking/lisp/slime/") ; your SLIME directory
(setq inferior-lisp-program "/opt/sbcl/bin/sbcl") ; your Lisp system
(require 'slime)
(slime-setup)
Run Code Online (Sandbox Code Playgroud)
slime目录很简单.关于Lisp系统.我怎么找到它?
我正在使用带有clojure模式的Emacs和连接到运行生成的swank服务器的粘液,lein swank并且非常希望能够轻松跳转到我的项目中的函数定义.我是否可以在每次更改分支时手动重建标记时执行此操作?
有没有办法在Clojure repl中扩展当前命令,就像我能在Common Lisp中做的那样?
比如说我输入了:
Math/
Run Code Online (Sandbox Code Playgroud)
我希望tab键扩展到该命名空间中的所有可用变量和函数.
我正在使用Clojure作为劣质lisp想知道如何通过Clojure中的普通香草代表和swank slime来做到这一点.