Xcode装逼插件ActivatePowerMode

时间:2015-12-07 | 分类:优雅的iOS,学习园地,逆向工程 | 浏览:12896 | 评论:7 | 发表评论

最近微博上在流传一个Atom编辑器的插件:activate-power-mode,装上这个插件后打字会有震屏和火花效果,非常牛逼,效果如下:

据说有人用了,并且还是机械键盘,差点被同事打断手了。

于是我花了几天的下班时间,写了个Xcode版的插件,模仿了这个效果:

插件下载地址为:https://github.com/poboke/ActivatePowerMode,也可以在Alcatraz上搜索ActivatePowerMode进行安装。

这些功能实现起来也不难,主要是获取光标所在位置的代码颜色花了比较多时间。

我一开始以为代码高亮的颜色是由NSAttributedString控制的,但是我获取到的属性里只有字体字号等属性,没有NSForegroundColorAttributeName这个字段,所以只能用别的方法寻找。

用逆向思维思考一下,因为代码高亮是由配色方案管理的,切换配色方案时,代码颜色就会改变。而配色方案是根据单词的类型来设置颜色的,所以猜想可能存在某个方法,可以读取或设置某个范围的文字的颜色,这样才方便配色方案功能的实现。

先用关键字color在Xcode的私有类头文件里搜索,把搜到的方法名输出到一个文本里。然后再用关键字NSRange搜索,很快就发现了一个可疑的方法:- (id)colorAtCharacterIndex:(unsigned long long)arg1 effectiveRange:(struct _NSRange *)arg2 context:(id)arg3。然后再hook这个方法,果然返回了相应的颜色。

标签: , , ,
本文链接: Xcode装逼插件ActivatePowerMode
版权所有: 破博客, 转载请注明本文出处。

7个评论

  1. yeeeeeap
    2015/12/18 11:13:42

    你好,装了这个插件后想卸载,Delete the following directory:

    $HOME/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins/ActivatePowerMode.xcplugin
    不知道怎么进入这个目录.
    新人请见谅,给点提示也好

    • admin
      2015/12/18 13:07:54

      在终端执行 rm -r ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins/ActivatePowerMode.xcplugin 命令,然后重启Xcode就行了

  2. zxzhao
    2015/12/17 15:23:26

    插件不错,有个地方需要修改下,就是自动补全框出现的时候,上下键选择候选补全的时候,不应该触发,要不然自动补全框会消失在出现,这样快速上下键选择的时候,自动补全框就会丢失。

    • admin
      2015/12/17 15:36:58

      多谢你的建议,不过我好像重现不了这个bug,当我按住上下箭头的时候,补全框并没有消失,我使用的是Xcode7.2

  3. osora
    2015/12/17 01:35:11

    :???: notepad支不支持这个插件

发表评论

您的昵称: *

您的邮箱: * (显示gravatar头像)

联系方式: