热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Windows下Emacs+Distel的配置

Emacs+Distel是目前为止开发Erlang工程最好的组合(我也是听说的,请选择性接受)。光用Editplus+ErlangSyntaxHighlightPlugi

Emacs + Distel是目前为止开发Erlang工程最好的组合(我也是听说的,请选择性接受)。光用Editplus + Erlang Syntax Highlight Plugin实在痛苦,在窗口之间不停地切来切去,调试起来也很成问题。google了一把,决定配一个Emacs + Distel的环境。配好后,基本功能试了试,挺好用,高级功能还没有用到,以后再说。


    我自己的环境(这里原作者不一样)
    Win7 + otp_win32_R16B02 + Emacs-23-CvsP091103-EmacsW32-1.58 + Distel 4.03

    首先安装Erlang和Emacs,安装过程和一般应用软件差不多,这里略过。为避免路径中空格带来麻烦,Erlang的安装路径不要带空格(本机是D:\erl5.10.3)。

    然后配置环境变量:
    ERL_HOME=D:\erl5.10.3   (注:这里的斜杠是反斜杠)
    PATH加入%ERL_HOME%\bin  (控制面板-系统和安全-系统-高级系统设置-高级-环境变量-

    HOME=D:\erlang          (这个路径配置为erlang工程的目录,本机中,环境变量名好像只能是HOME才能发挥作用)

    解压缩Distel到D:\erl5.10.3\lib\distel-4.03    (这个路径随意,便于管理,将它放到erlang的lib下面)

    在D:\erlang(环境变量HOME)创建一个名为“.emacs”的文本文件,内容如下:


;; Erlang mode
(setq load-path (cons  "D:/erl5.10.3/lib/tools-2.6.2/emacs" load-path))       
(setq erlang-root-dir "D:/erl5.10.3")
(setq exec-path (cons "D:/erl5.10.3/bin" exec-path))
(require 'erlang-start)

;; Distel
(let ((distel-dir "D:/erl5.10.3/lib/distel-4.03/elisp"))
  (unless (member distel-dir load-path)
    (setq load-path (append load-path (list distel-dir)))))
(require 'distel)
(distel-setup)

;; Some Erlang customizations
(add-hook 'erlang-mode-hook
  (lambda ()
  ;; when starting an Erlang shell in Emacs, default in the node name
    (setq inferior-erlang-machine-options '("-sname" "emacs"))
    ;; add Erlang functions to an imenu menu
    (imenu-add-to-menubar "imenu")))
;; A number of the erlang-extended-mode key bindings are useful in the shell too
(defconst distel-shell-keys
  '(("\C-\M-i"   erl-complete)
    ("\M-?"      erl-complete) 
    ("\M-."      erl-find-source-under-point)
    ("\M-,"      erl-find-source-unwind) 
    ("\M-*"      erl-find-source-unwind) 
    )
  "Additional keys to bind when in Erlang shell.")
(add-hook 'erlang-shell-mode-hook
   (lambda ()
     ;; add some Distel bindings to the Erlang shell
     (dolist (spec distel-shell-keys)
       (define-key erlang-shell-mode-map (car spec) (cadr spec)))))


    别忘记将以上加粗部分路径更换为自己实际的路径。这里注意路径分隔符改为正斜杠“/”而不是反斜杠“\”。这样emacs启动时可以自动加载erlang mode和distel的配置文件。同时其它部分的斜杠可以不用改变。

    再在D:\erlang(环境变量HOME)建立一个名为“.erlang.COOKIE”的文本文件,内容随意,例如:
it_is_a_secret_file
    这个文件是Erlang的Magic COOKIE文件。由于Distel需要和运行的erlang节点进行通信,因此这一步不可少。

    最后创建一坨Emacs的快捷方式,放在桌面或者任务栏快速启动,右击快捷方式选“属性”,将“起始位置”设为E:\erlang(HOME环境变量)。这样Emacs启动后可以直接定位到erlang工程的目录。

    启动Emacs,打开一个erl文件,应该能看到多了一个“Erlang”菜单,菜单下有一个Distel的子菜单,如图:

(注:这里一定要打开一个erl文件之后才会有Erlang菜单产生。如果打开了erl文件还没有产生erlang菜单,则很可能前面的步骤出错了。)

Distel

    至此,环境全部配置完成。而按照这个步骤,本机可以实现想要的配置。
推荐阅读
  • Node.js 教程第五讲:深入解析 EventEmitter(事件监听与发射机制)
    本文将深入探讨 Node.js 中的 EventEmitter 模块,详细介绍其在事件监听与发射机制中的应用。内容涵盖事件驱动的基本概念、如何在 Node.js 中注册和触发自定义事件,以及 EventEmitter 的核心 API 和使用方法。通过本教程,读者将能够全面理解并熟练运用 EventEmitter 进行高效的事件处理。 ... [详细]
  • 求助高手:下载的压缩包中包含CMake文件,如何在Windows环境下使用已安装的CMake GUI进行运行?
    从GitHub仓库 `https://github.com/vonmax007/RobotSimulation` 下载的代码包含多种算法,其中算法1的文件目录中包含了CMake文件。为了在Windows环境下使用已安装的CMake GUI运行这些文件,需要先确保CMake已正确安装,并按照以下步骤操作:打开CMake GUI,设置源代码路径和构建路径,点击“Configure”配置项目,然后点击“Generate”生成构建文件。最后,在生成的构建目录中使用命令行或IDE进行编译和运行。 ... [详细]
  • Go语言中的高效排序与搜索算法解析
    在探讨Go语言中高效的排序与搜索算法时,本文深入分析了Go语言提供的内置排序功能及其优化策略。通过实例代码,详细讲解了如何利用Go语言的标准库实现快速、高效的排序和搜索操作,为开发者提供了实用的编程指导。 ... [详细]
  • 地图集成方法与应用 ... [详细]
  • 深入解析JavaScript中的函数防抖与节流技术及其应用场景
    本文深入探讨了JavaScript中函数防抖和节流技术的原理及应用场景。通过详细的示例代码,全面解析了这两种优化方法在实际开发中的重要作用,为开发者提供了宝贵的参考和实践指导。 ... [详细]
  • 本次发布的Qt音乐播放器2.0版本在用户界面方面进行了细致优化,提升了整体的视觉效果和用户体验。尽管核心功能与1.0版本保持一致,但界面的改进使得操作更加直观便捷,为用户带来了更为流畅的使用体验。此外,我们还对部分细节进行了微调,以确保软件的稳定性和性能得到进一步提升。 ... [详细]
  • 在Java编程中,为了提高代码的可读性和执行效率,建议优先使用局部变量来存储方法的返回值,而不是多次调用同一个方法。这样不仅可以减少方法调用的开销,还能避免潜在的性能问题。此外,使用局部变量还可以增强代码的可维护性和调试便利性。 ... [详细]
  • 池子比率:BSV 区块链上的去中心化金融应用——Uniswap 分析
    池子比率:BSV 区块链上的去中心化金融应用——Uniswap 分析 ... [详细]
  • 微信支付授权目录配置详解及操作步骤
    在使用微信支付时,若通过WeixinJSBridge.invoke方法调用支付功能,可能会遇到“当前页面URL未注册”的错误提示,导致get_brand_wcpay_request:fail调用微信JSAPI支付失败。为解决这一问题,需要正确配置微信支付授权目录,确保支付页面的URL已成功注册。本文将详细介绍微信支付授权目录的配置步骤和注意事项,帮助开发者顺利完成支付功能的集成与调试。 ... [详细]
  • 在Java中,匿名函数作为一种无名的函数结构,无法独立调用;而在JavaScript中,不仅有类似的匿名函数,还有立即执行函数(IIFE)和闭包等高级特性。立即执行函数同样基于匿名函数实现,但会在定义时立即执行,而闭包则通过嵌套函数来捕获外部变量,实现数据封装和持久化。这些不同的函数形式在实际开发中各有应用场景,理解其特点有助于更好地利用语言特性进行编程。 ... [详细]
  • 本文详细介绍了如何在Linux系统中搭建51单片机的开发与编程环境,重点讲解了使用Makefile进行项目管理的方法。首先,文章指导读者安装SDCC(Small Device C Compiler),这是一个专为小型设备设计的C语言编译器,适合用于51单片机的开发。随后,通过具体的实例演示了如何配置Makefile文件,以实现代码的自动化编译与链接过程,从而提高开发效率。此外,还提供了常见问题的解决方案及优化建议,帮助开发者快速上手并解决实际开发中可能遇到的技术难题。 ... [详细]
  • 浅析PHP中$_SERVER[
    在PHP后端开发中,`$_SERVER["HTTP_REFERER"]` 是一个非常有用的超级全局变量,它可以获取用户访问当前页面之前的URL。本文将详细介绍该变量的使用方法及其在不同场景下的应用,如页面跳转跟踪、安全验证和用户行为分析等。通过实例解析,帮助开发者更好地理解和利用这一功能。 ... [详细]
  • Mongoose E11000 错误:集合中出现重复键问题分析与解决 ... [详细]
  • 本文深入探讨了 Vue.js 中异步组件的应用与优化策略。首先,文章介绍了异步组件的基本概念及其在现代前端开发中的重要性。为了确保最佳实践,建议使用 Webpack 作为模块打包工具,因为 Browserify 默认不支持异步组件的加载。接着,详细解释了异步组件的使用方法,并提供了官方文档的相关链接以供参考。此外,文章还讨论了多种优化技巧,包括代码分割、懒加载和性能调优,以提升应用的整体性能和用户体验。 ... [详细]
  • 在生产环境中进行高效部署与优化 ... [详细]
author-avatar
是远航呀
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有