如何调试Emacs Lisp程序

如何调试Emacs Lisp程序,第1张

lisp程序的运行被称为取值,一般的过程链旅是打开一桥唤仔个emacs编辑器,然后用快捷键C-x C-e 调用函数eval-current-buffer运行当前buffer里的elisp程序。

emacs 22以后支持#!/usr/bin/emacs --script像脚本一样执行elisp程序,这样就没必要打开一个emacs编辑器后再执行了。

下面是一个程序实例,见我的GitHub链敏汪接

[python] view plain copy

#!/usr/bin/emacs --script

NAME

kit.el ---- an example elisp script, which is

used to calculate intern salary.

进行Java开发的朋友们一般都使用某种IDE进行开发 比较常用的有JBuilder Visual Cafe Visual Age等 使用IDE开发对于初学者是一种很好的手段 但对于熟悉了linux/unix开发习惯的朋友们 使用这样的IDE进行开发的缺点和限制是显而易见的 首先 你不得不了解各个IDE不同的用法 同时不得不接受各种Wizard强加给你的代码 这些代码(尤和盯其是经过改动之后)经常是丑陋且令人费解的 (本人就经常对着JBuilder产生的丑陋代码恶心) 其次 这些IDE一般都或多或少地使用了私有的工具或库 对软件的可移植性埋下了隐患 最后 最令我无法接受的是在我的机器(PIII M NT )上 JBuilder的速度实在无法令人满意(可能其他IDE在这方面好一些) 使用emacs(本文使用emacs来代表GNU emacs或XEmacs)来开发程序显然是个很好的选择 其效率 高度的可配置性和极其强大的功能足以让任何人爱不释手 本人更是标准的 *** xemacs fan 由于Java的特性一些特性 使用emacs这样的纯编辑器来进行Java开发也有其不方便之处 对于较大的项目 源文件经常分布在繁多的目录中(//foo/bar/ ) 如果使用emacs进行开发 需要频繁的敲入冗长的目录名 这是一大不方悔芦便之处 其次 在Java编译和运行调试 我们需要向编译器 虚拟机传递一些参数 当然 可以使用Makefile来实现 但这些参数大多并不复杂 使用make 这样功能强大的工具有些破费了 还有 对于一些经常使用的功能或语句如(System out println implements)每次使用都自己敲显然太烦琐 最后 对于一个OO语言来说 有一个类浏览器也是很方便的 现在 使用jde可以基本克服所有这些缺点 将IDE的功能和emacs的优点完美地结合起来 jde是一个使用emacs lisp编写的ide软件包 主要部分有Paul Kinnucan开发 在emacs中安装jde后可以基本实现大多数商业IDE系统所提供的功能 由其主要特性有: 针对Java的语法高亮显示和缩进 关键字及类方法等的自动补全(SourceInsight? 目前还不很成熟) 编译错误定位 框架代码自动产生(Listener println等) 工程文件(记录编译运行调试参数) 树状类和文件浏览器显示 集成帮助(javadoc)及调试功能(jdb+gud) 除了这些特征外 jde当然具有emacs的一切优秀特征 如可移植性(几乎一切 OS) 可配置性(几乎是无限的 黑客的生命 : )) 下面将具体介绍jde的安装及使用 I 安装 由于jde是一个emacs lisp语言包 它的安装是非常方便的 当然 需要具有 emacs配置的基本知识 首先 需要满足其安装要求 emacs GNU Emacs 或XEmacs 版以上 软硬件平台不限 确认安装了jde需要的一些emacs lisp包(package) 有speedbar(类浏览器) semantic(语法分析) eieio(OO lisp) elib(Emacs lisp Utilities) 另外 有些功能需要beanshell(什么是beanshell?) 在XEmacs下运行需要安装FSF pat包 将jde包解开到某目录 修改你的 emacs配置文件增碧棚带加以下一些内容 Set the debug option to enable a backtrace when a problem occurs 当有问题出现显示错误信息 便于调试 (setq debug on error t) Update the Emacs load path to include the path to the JDE and its require packages This code assumes that you have installed the packages in the emacs/site subdirectory of your home directory 加载所需的package (add to list ´load path (expand file name ~/emacs/semantic )) (add to list ´load path (expand file name ~/emacs/speedbar )) (add to list ´load path (expand file name ~/emacs/eieio )) (add to list ´load path (expand file name ~/emacs/jde/lisp )) (add to list ´load path (expand file name ~/emacs/elib )) If you want Emacs to defer loading the JDE until you open a Java file edit the following line 不自动加载jde mode (setq defer loading jde t) to read: (setq defer loading jde t) 编辑 java文件时加载jde (if defer loading jde (progn (autoload ´jde mode jde JDE mode t) (setq auto mode alist (append ´(( \\ java\\´ jde mode)) auto mode alist))) (require ´jde)) 如果安装无误的话 使用emacs打开java文件时将自动进入jde mode 过程可能需要几秒钟 因为jde将调用semantic对整个文件进行语法分析 II 使用jde 进入jde mode后 我们自然可以发现与普通Java Mode有一些不同 首先是语法的高亮显示更加 Java 化 一目了然 xemacs顶部的菜单也有了一些变化多了三个菜单项 JDE Classes Senator JDE菜单里包括了JDE提供的所有功能 下面将详细介绍 Classes 是JDE对Java文件进行语法分析后生成的 包括了当前文件中的所有类 变量 方法 可以通过选择菜单的方式访问相应的代码 而Senator菜单是由semantic包生成的 可以通过token的方式对源文件进行搜索定位 下面我们来看看emacs lisp为我们提供了什么样的功能 JavaDoc支持:JavaDoc是JDK提供的文档生成工具 通过遵循一定的规范对源代码进行注释 JavaDoc可以生成整个程序的Java风格文档 在jde中 我们只需要将光标定位在某 method的开始 按C c C v j jde将自动生成Javadoc框架注释 在相应的部分写好说明后 可以使用javadoc工具生成Java风格的文档 自动补全:将变量jde enable abbrev mode变量设置为t jde可以实现自动补全的功能 避免我们手工输入的烦琐和易错 补全主要有三种类型 首先关键字补全 即可以自动补全Java语言的关键字 如我们敲入 impl jde就会自动补全成为implements(一个本人经常拼错的关键字) 其他的如abstract可以用 ab 来补全 当然 这只是emacs lisp雕虫小技罢了 但重要的是 你可以通过对变量jde mode abbrevations变量的修改来自己定义那些关键字应补全 应怎样补全(这样太方便了!) 下面介绍对控制流结构的补全 即if else等结构的补全 可以避免控制结构写大了以后结构发生错误 不过本人体会只要你有良好的编程习惯 这个东西用处不是太大 比较有用的还有变量名的补全 如我们在某Java文件中定义了名字较长的变量 名为 variablenametoolong 在后面需要引用时 我们不必记住变量的名字 在输入头几个字母后 按M /键 jde将自动补全为相应的变量名 如果有多个选择 多次按M /可以找到你需要的 SourceInsight式的全局method补全功能目前jde通过beanshell实现 还不够成熟 代码框架:jde可以自动生成特定类和代码段的框架代码 不需要用户多次重复输入 目前支持的有: import自动生成 即不需要知道某class到底是在什么package里 敲入其名字后按C c C v C z jde会自动调用beanshell找到相应的package并自动加入importmethod重载自动生成 即可以根据当前继承的类来自动生成重载函数的框架interface自动生成 根据所implements的interface 自动生成所需要的重载的函数(太方便了 不需要自己对着文档一个一个地实现了)根据模版生成某特定类型类的框架 目前有WindowListener ActionListener Get/Set等等 以上这些模版都可以根据需要自己来修改 great! 项目文件:将所有编译 运行参数一次存储起来 设置好classpath sourcepath mainclass 之后我们可以在任一文件的Buffer中按C c C v C c对当前文件进行编译 按C c C v C r可以自动运行项目 或按C c C v C d进行调试 集成帮助:设置好帮助文件的URL后 可以使用C c C v C n自动运行启动Browser 来查看帮助 最好安装emacs w m 这样看帮助非常方便 更方便的是设置好Class的帮助文件后可以实现上下文敏感的帮助 在某符号上调用jde help symbol 可以自动显示该符号的帮助 类和文件的浏览:jde提供了三种方法 第一种即我们已提过的Class菜单 第二种是使用etags 第三种最强大的是使用speedbar实现的树状浏览器 几乎和商业IDE使用的没有任何区别 可以用图形方式快速地访问文件 类的方法及变量及其所依赖的包等等 调试:jde通过gud提供了对jdb的支持 同时为了更好地发挥jde的功能 jde的作者们还专门写了一个自己的调试器JDEbug 遗憾的是对此本人研究不够 III 配置 jde拥有几乎无限的可配置性 最基础可以修改与jde相关的变量和key binding等 深入一些的可以修改模版等 当然最深入的就是直接Hack其源码了 IV 总结 本文简要介绍了emacs下的Java IDE jde的安装使用和基本功能 希望更多的朋友能喜欢上emacs和jde 以上只是一最简要的介绍 具体功能和妙处还需要在使用中体会 需要说明的一点是使用jde首先必须具有emacs的基本知识 其次要有一点Hack精神 如果需要一个上手快的傻瓜式的IDE 那jde可能就不能满足要求了 关于jde有关的资料 maillist等其他信息 lishixinzhi/Article/program/Java/hx/201311/25622

1.进入emacs 后,C-x,C-f (意思是先按ctrl+x再接着按ctrl+f)找到文件或新建文件

然后编写程序,如hello.c

2.保存所编写的程序,命令是C-x,C-s,(先按ctrl+x,再按ctrl+s)

3.编译程序。通过命令M-x (alt+x)shell或M-x eshell进行shell模式,然后使用gcc -Wall -o hehe hehe.c进行编译,如果没有安装gcc,请先安装gcc

5.切换回编衫或数辑区: c-x b ’buffername‘可以切换到某个buffer,如要切换回刚才那个hehe.c编辑区,输入c-x b "buffername"(例如先按ctrl+x 再输入b 再输入hehe.c)。有木有发现,emacs比vi好用多了。

二、Emacs按键

Vim 把控制和编辑分成了两个模式,单独 *** 作,互不影响。而Emacs是同时进行编辑和控制,只不过控制命令需要使用控制键。

Emacs的控制键就三个Control,Shift和 Meta,Control 和 Shift 键盘上都有,Meta 在美式键盘中就是Alt,在苹果键盘上是那个很花的四个圈的键,如果键盘上没有Alt (这或首个要某些欧洲人才会遇到)可以使用Esc 代替,另外Esc 不想Alt 通常当组合键用团族,它要单独按一下,再按另外的。

以后控制命令就这样表示:

C-f Ctrl+f

C-M-f Ctrl+Alt+f

C-_  Ctrl+Shift+-


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12484492.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存