最近微博上在流传一个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这个方法,果然返回了相应的颜色。
2015/12/18 11:13:42
你好,装了这个插件后想卸载,Delete the following directory:
$HOME/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins/ActivatePowerMode.xcplugin
不知道怎么进入这个目录.
新人请见谅,给点提示也好
2015/12/18 13:07:54
在终端执行 rm -r ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins/ActivatePowerMode.xcplugin 命令,然后重启Xcode就行了
2015/12/18 15:02:52
OK了,谢谢
2015/12/17 15:23:26
插件不错,有个地方需要修改下,就是自动补全框出现的时候,上下键选择候选补全的时候,不应该触发,要不然自动补全框会消失在出现,这样快速上下键选择的时候,自动补全框就会丢失。
2015/12/17 15:36:58
多谢你的建议,不过我好像重现不了这个bug,当我按住上下箭头的时候,补全框并没有消失,我使用的是Xcode7.2
2015/12/17 01:35:11
2015/12/17 11:23:31
你可以在这个页面看到比较全的编辑器列表 https://github.com/codeinthedark/awesome-power-mode