目前,当我使用C或C++编码时,我使用Emacs的工作流涉及三个窗口.右边最大的包含我正在使用的文件.左边分为两个,底部是我用来输入编译或make命令的shell,top通常是我在工作时要咨询的某种文档或README文件.现在我知道有一些非常专业的Emacs用户,我很好奇其他Emacs在功能上是有用的,如果打算将它用作一个完整的IDE.具体来说,大多数IDE通常以某种形式实现这些功能:
对于其中的一些,很明显Emacs如何适应这些功能,但其余的呢?此外,如果必须关注特定语言,我会说它应该是C++.
编辑:一位用户指出,当我说'剩下的'时,我应该更具体一些.大多数情况下,我对有效的版本控制以及文档查找感到好奇.例如,在SLIME中,在Lisp函数上进行快速hyperspec查找相当容易.有没有快速查找C++ STL文档中的内容(例如,如果我忘记了hash_map的确切语法)?
我在Common Lisp中完成了大部分的开发工作,但是有些时候我想切换到Scheme(在Small Pieces中读取Lisp,当我想要使用continuation时,或者当我想在Gauche中执行一些脚本编写时,例).在这种情况下,我不舒服的主要原因是我没有史莱姆(是的,你可以称我为瘾君子).
Scheme最接近史莱姆的是什么?具体来说,我最感兴趣的是:
let
中定义的函数).(map |)
(光标位置由|
)表示),我想(map predicate . lists)
在迷你缓冲区中看到我已经通过降低重要性来命令这些功能.
我的Scheme实现选择是:
如果它至少与它们一起工作会很棒.
我已经尝试过几次移植到Emacs进行Clojure开发,遵循各种博客文章,截屏和教程,但是在某些地方总是出现问题 - 无效的键绑定,不兼容的版本等等,我发现自己争先恐后地回到Vim.但我知道我想要Paredit和SLIME.
所以,我将再次尝试,这次由功能强大的StackOverflow™社区支持.
我希望这个问题的答案将保持最新,并可以作为像我这样的试探性转变的参考.
我想要的是: - Clojure的最新稳定版本 - Aquamacs(如果它对Rich Hickey来说足够好,对我来说已经足够好了),最新版本 - Clojure模式 - SLIME/SWANK - Paredit - 还有什么是不可或缺的吗?
安装上述内容的分步说明非常好 - 最好采用shell脚本格式.我还想了解如何开始使用最常见的Clojure相关操作(包括键绑定),包括文档和备忘单的链接.
在clojure中我有这样的行来定义默认值:
(def *http-port* 8080)
Run Code Online (Sandbox Code Playgroud)
我现在决定将这些类型的值正式化为一个配置单元,我想取消定义该值,*http-port*
以便我可以找到仍然引用该值的位置并更改它们以使用新值.换句话说,我正在通过将值移动到不同的位置来进行重构.
我这样做的方法是退出粘液并尝试重新启动粘液会话.在maven的编译阶段,这些错误被拾取,我可以一次找到并修复一个引用.然后我修复错误,冲洗并重复.这显然令人沮丧.
连接到粘液会话时我该怎么做?
我有glob-cursor-mode激活全局,像这样:
(require 'centered-cursor-mode)
(global-centered-cursor-mode 1)
Run Code Online (Sandbox Code Playgroud)
它工作正常,但有一些主要模式,我想自动禁用它.例如slime-repl和shell.
还有另一个问题涉及同一问题,但另一个小模式.不幸的是,答案只提供了这种特定次要模式(global-smart-tab-mode)的解决方法,这种方式不适用于centered-cursor-mode.
我试过这个钩子,但它没有效果.变量不会改变.
(eval-after-load "slime"
(progn
(add-hook 'slime-repl-mode-hook (lambda ()
(set (make-local-variable 'centered-cursor-mode) nil)))
(slime-setup '(slime-repl slime-autodoc))))
Run Code Online (Sandbox Code Playgroud) 我想设置slime + lein-swank来重新加载当我保存文件时从repl引用的源文件.目前我这样做:
我想不必记得做第4步.
google几乎是不可能的,因此我的理解仅限于通过读取粘液源代码的上下文线索:也许它是普通lisp中对象系统的一部分?像'自我'这样的东西?
片段:
(cond #+#.(swank-backend::sbcl-with-new-stepper-p)
Run Code Online (Sandbox Code Playgroud)
也许这会使它更具有可谷歌性:磅加磅//哈希加哈希符号// octothorp plus octothorp
我正在使用带有CLISP和Slime的Emacs,并希望能够在屏幕上绘制图片.我特别考虑绘制图形,但任何能让我绘制基本形状并操纵它们的东西都能让我开始.
我想在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'不会产生任何变化.那么这是什么一回事?
slime ×10
emacs ×6
clojure ×5
common-lisp ×4
lisp ×2
aquamacs ×1
graphics ×1
ide ×1
interactive ×1
leiningen ×1
namespaces ×1
paredit ×1
scheme ×1
swank ×1
windows ×1