热门标签 | 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

    至此,环境全部配置完成。而按照这个步骤,本机可以实现想要的配置。
推荐阅读
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本文介绍了brain的意思、读音、翻译、用法、发音、词组、同反义词等内容,以及脑新东方在线英语词典的相关信息。还包括了brain的词汇搭配、形容词和名词的用法,以及与brain相关的短语和词组。此外,还介绍了与brain相关的医学术语和智囊团等相关内容。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • 有没有一种方法可以在不继承UIAlertController的子类或不涉及UIAlertActions的情况下 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • 渗透测试基础bypass绕过阻挡我们的WAF(下)
    渗透测试基础-bypass ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了如何使用python从列表中删除所有的零,并将结果以列表形式输出,同时提供了示例格式。 ... [详细]
  • Linux环境变量函数getenv、putenv、setenv和unsetenv详解
    本文详细解释了Linux中的环境变量函数getenv、putenv、setenv和unsetenv的用法和功能。通过使用这些函数,可以获取、设置和删除环境变量的值。同时给出了相应的函数原型、参数说明和返回值。通过示例代码演示了如何使用getenv函数获取环境变量的值,并打印出来。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 开发笔记:实验7的文件读写操作
    本文介绍了使用C++的ofstream和ifstream类进行文件读写操作的方法,包括创建文件、写入文件和读取文件的过程。同时还介绍了如何判断文件是否成功打开和关闭文件的方法。通过本文的学习,读者可以了解如何在C++中进行文件读写操作。 ... [详细]
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社区 版权所有