Rails 实现一个代码补全的思路

moliliang · 发布于 2017年1月02日 · 最后由 moliliang 回复于 2017年1月07日 · 1024 次阅读
10594

因为一直用的rubymine,用rubymine主要是强大的代码补全,有比较快的工作效率。

后来被同事安利了 vscode,这个东西也不错。

但是rails的自动完成其实很一般。

但是pry这个gem的[tab]键之后,有很多rails的动态方法:

如输入 User.find_ 之后,按下 [tab] 就能出现rails的动态方法。

后来发现pry传入字符串,就可以得到返回的代码补全:

require 'readline'
require 'pry/input_completer'
result = Pry::InputCompleter.new(Readline).call 'User.find_'

所以,我fork了 pry这个gem包。

加入了一段代码: https://github.com/molisoft/prycode/commit/2babee8ce55eca03f2af30daadd461522e20597d 也就是http功能。

启动它:

这样的话,就可以直接这样操作:

发起http请求“Array.d” 就可以得到

{"result":["up","isplay","efine_singleton_method","ebugger"]}

其中的up就是 Array.dup , isplay就是Array.display ..

所以,就可以给vscode写一个插件,来实现代码补全啦?或者 vim、emacs等等编辑器

于是没时间写。。

而且prycode这个项目也不应该是这样写的。

主要是demo目的。

谁有时间,可以基于这个思路,实现一个通用的代码补全 呀。。。

共收到 14 条回复
18852

个人觉得,用 ruby写代码无需代码补全。只要补相同名称就可以了,sublime,vscode和atom都已经有这项功能

5917

这个思路不错👍

10594

#1楼 @freefishz 动态方法呢,ruby的代码不像静态语言,很多元编程代码呢 😂

17025

如果某个类型include的module非常多,而且还引入另一个文件的类呢

10594

#5楼 @jiyuhang110 pry可以载入整个rails环境。

96

👍 未来动态语言ide的方向。

18852

#3楼 @moliliang 其实正是由于ruby的元编程让我觉得没必要代码补全

10594

#11楼 @freefishz 自己写的还好

2880

RubyMine 就是类似这样实现补全的, 不过它不用起 pry

10594

#13楼 @luikore 噢,没了解rubymine

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册