在Emacs下用java编程(Android相关)
之前曾经在水木的Emacs版里提到我在用emacs-eclim(vim-eclim的一个衍生应用,从Emacs/Vim中集成Eclipse的一些功能的插件)。
后来发现这个Eclim(其实是Eclipse)在打开很大的项目(整个android)的时候, 系统变得很慢,于是果断放弃,转而用ctags-exuberant、一堆perl脚本再加上 Emacs lisp做一些简单的java编程工具。
1 目前已经实现的功能
1.1 ajoke-get-hierarchy
1.2 ajoke-get-import
这一点功能基本上与Eclim的是一样的,parse一个.java文件,把里面没有 import过的class都给import进来。feature有:
- 能正确处理java.lang.*和当前package下的classes,这些类是不需要import的。
- 当用ctags-exuberant查到某个class在多个package中都有定义的时候,会在 emacs-lisp中调用completing-read要求用户选一个。
1.3 ajoke-resolve
做这个最初的目的是想做上下文补齐,后来发现太难了,补齐还是用我自己的 提干式id补齐和re补齐 吧。
2 使用方法
这套工具和我的个人配置环境整合在一起,需要先配一下,参考 这里 。
配置完成后,到你的android目录下执行 for-code-reading
(会花大约一小时,
主要是 mkbeagrepidx 会花很长时间),然后执行 ajoke-get-hierarchy.pl
android.view.View
,应该能看到这样的输出:
=> class android.view.View at frameworks/base/core/java/android/view/View.java line 659. => interface android.graphics.drawable.Drawable.Callback at frameworks/base/graphics/java/android/graphics/drawable/Drawable.java line 261. => interface android.graphics.drawable.Drawable.Callback2 at frameworks/base/graphics/java/android/graphics/drawable/Drawable.java line 302. => interface android.graphics.drawable.Drawable.Callback at frameworks/base/graphics/java/android/graphics/drawable/Drawable.java line 261. => interface android.view.KeyEvent.Callback at frameworks/base/core/java/android/view/KeyEvent.java line 1282. => interface android.view.accessibility.AccessibilityEventSource at frameworks/base/core/java/android/view/accessibility/AccessibilityEventSource.java line 29.