资源预览内容
第1页 / 共44页
第2页 / 共44页
第3页 / 共44页
第4页 / 共44页
第5页 / 共44页
第6页 / 共44页
第7页 / 共44页
第8页 / 共44页
第9页 / 共44页
第10页 / 共44页
亲,该文档总共44页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
使用Emacs开发iPhone应用程序的教程,前言 环境设定 设定 XCode 的外部编辑器 Emacs 中管理 Objective-C 文件 编译与执行 查找帮助 扩展设置 打开头文件 补全 安装 设 置 安装 设 置 Text macros(模板) 安 装 设 置 自动插入匹配的括号 缩 进 选 择矩形区域 语法检查 启动优化,通常,在 Mac 下开发 Cocoa 应用程序或是 iPhone 应用程序的时候使用的是 XCode ,但是习惯了 Emacs 的人也许已经不习惯这样的 IDE 了。比如本人,自从接触 Emacs 以后,基本上所有的程序,博客,工作报告等都是用它来完成的。这里,我将给大家介绍在 Emacs 下开发 iPhone 应用程序的方法,也许试过之后你也会喜欢上它的(在windows/linux下开发的用户也可以试试,一切都可以自动化的完成,参考这里和这里。,前言,设定 XCode 的外部编辑器首先将缺省的编辑器由 XCode 更改为 Emacs。这样一来,双击 XCode 的源文件后,将用 Emacs 打开。在环境设定-文件类 型-file-text- sourcecode- sourcecode.c-外部编辑器- 其他中选择Emacs.app。必须选择其他。 最初 emacs 由 Terminal 内启动。这里,工程文件还是由 XCode 打开的。,iPhone开发环境设定,利用 Emacs 开发 Objective-C 语言程序的时候,需要打开 objc-mode。首先在 /.emacs.el 中设定关联 objc 语言的文件后缀名 .m 、 .mm 、.h。 (add-to-list auto-mode-alist (.mm?wind_phpcode_1quot; . objc-mode) (add-to-list auto-mode-alist (.hwind_phpcode_1quot; . objc-mode) 但 是,后缀名为 .m 的文件除了 Objective-C 以外,matlab 中也在使用,后缀名为 .h 的文件 C/C+ 中也被应用。如果只是想这样单纯的设置,应该还是会带来一些不便的。不过不要紧,在 Emacs22 以后,为了解决这个问题可以设定magic-mode-alist。它可以解析具体文件中的内容确定具体的mode。这里,判断文件行头 是否有 implementation 、 interface 、 protocol ,如果有,就设定 objc-mode。 (add-to-list magic-mode-alist (.|n)*nimplementation . objc-mode) (add-to-list magic-mode-alist (.|n)*ninterface . objc-mode) (add-to-list magic-mode-alist (.|n)*nprotocol . objc-mode),Emacs 中管理 Objective-C 文件,这里使用 xcodebuild 命令行实现命令行的编译方式,你也可以使用这里的方法,使用 gcc; 自动加载 emacs-w3m (autoload w3m w3m Interface for w3m on Emacs. t) (require xcode-document-viewer) (setq xcdoc:document-path /Developer/Platforms/iPhoneOS.platform/Developer/Documentation/DocSets/com.apple.adc.documentation.AppleiPhone3_1.iPhoneLibrary.docset) (setq xcdoc:open-w3m-other-buffer t) (add-hook objc-mode-hook (lambda () ; 用 C-c w 来检索文档 (define-key objc-mode-map (kbd C-c w) xcdoc:ask-search),打开头文件比如像打开 #import 处的头文件时,可以使用 Emacs 中自带的 ffap(find file (or url) at point)。快捷键是 C-x C-f ,在光标处的头文件执行它,将打开对应的头文件。 (ffap-bindings) ; 设定搜索的路径 ffap-c-path ; (setq ffap-c-path ; (/usr/include /usr/local/include) ; 如果是新文件要确认 (setq ffap-newfile-prompt t) ; ffap-kpathsea-expand-path 展开路径的深度 (setq ffap-kpathsea-depth 5),iPhone开发教程之扩展设置,另外,由 .h 文件切换到 .m 文件、或者由 .m 文件切换到对应的 .h 文件、可以使用 ff-find-other-file。如下设置,使用 C-c o 来切换文件。 (setq ff-other-file-alist (.mm?wind_phpcode_9quot; (.h) (.ccwind_phpcode_9quot;(.hh .h) (.hhwind_phpcode_9quot;(.cc .C) (.cwind_phpcode_9quot; (.h) (.hwind_phpcode_9quot; (.c .cc .C .CC .cxx .cpp .m .mm) (.Cwind_phpcode_9quot; (.H.hh .h) (.Hwind_phpcode_9quot; (.C.CC) (.CCwind_phpcode_9quot;(.HH .H.hh .h) (.HHwind_phpcode_9quot;(.CC),(.cxxwind_phpcode_9quot; (.hh .h) (.cppwind_phpcode_9quot; (.hpp .hh .h) (.hppwind_phpcode_9quot; (.cpp .c) (add-hook objc-mode-hook (lambda () (define-key c-mode-base-map (kbd C-c o) ff-find-other-file) ),在 Emacs 中也能完成 Objective-C 的补全功能。设立,我们使用 auto-complete 、 company-mode 、 ac-company。,iPhone开发教程:补全,cd /.emacs.d mkdir lisp cd lisp curl -O curl -O curl -O curl -O curl -O http:/nschum.de/src/emacs/company-mode/company-0.4.3.tar.bz2 curl -O tar xvfj company-0.4.3.tar.bz2,安装,在 .emacs.el 中添加下面的设置: ; load-path 路径 (let (default-directory (expand-file-name /.emacs.d/lisp) (add-to-list load-path default-directory) (if (fboundp normal-top-level-add-subdirs-to-load-path) (normal-top-level-add-subdirs-to-load-path) ; 加载 (require auto-complete) (require auto-complete-config) (require ac-company),设 置,(global-auto-complete-mode t) ; ac-company 中设置 company-xcode 有效 (ac-company-define-source ac-source-company-xcode company-xcode) ; 设定 objc-mode 中补全 ac-mode (setq ac-modes (append ac-modes (objc-mode) ; hook (add-hook objc-mode-hook (lambda () (define-key objc-mode-map (kbd t) ac-complete) ; 使用 XCode 的补全功能有效 (push ac-source-company-xcode ac-sources) ; C+ 关键词补全 (push ac-source-c+-keywords ac-sources) ),; 补全窗口中的热键 (define-key ac-completing-map (kbd C-n) ac-next) (define-key ac-completing-map (kbd C-p) ac-previous) (define-key ac-completing-map (kbd M-/) ac-stop) ; 是否自动启动补全功能 (setq ac-auto-start nil) ; 启动热键 (ac-set-trigger-key TAB) ; 候補的最大件数(缺省 10件) (setq ac-candidate-max 20),如果不能很好的完成补全,先用 XCode 编译一次源代码,然后再试应该没有什么问题了。因为上记补全的方法实际上是使用了 XCode 的 xcodeindex 命令,需要动态地收集补全的信息。etags如果你不喜欢这种方式,还可以试试 etags(或者 gtags,这里只介绍 etags,有兴趣的朋友可以自己试试 gtags )。它主要是利用了源代码文件(类名,函数名等)来建立索引(tag)。首先,使用 etags 命令生成tag文件。以下的例子生成 tag 到 /.emacs.d/share/tags 下。 cd /.emacs.dmkdir -p share/tagscd share/tagsfind /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS$VER.sdk/System/Library/Frameworks -name *.h | xargs etags -f objc.TAGS -l objc,生成的文件名为 objc.TAGS ,内部只是类的名称。如果要得到比较详细的信息(函数名等)使用下面的shell脚本。 #!/bin/sh s=t S=$s* w=_a-zA-Z0-9 CN=A-Z$w* NM=$w$w* SDK=/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS$VER.sdk/System/Library/Frameworks find $SDK -name *.h | xargs etags -a -declarations -r /$S-+$S($S$NM)1,3$S*$S)?$S($NM)$S:;/2/ -f frm.tags sed /class/d frm.tags objc.TAGS tag 文件比较大,这里我们只是作为 objc-mode 的补全候补来使用,这里使用到了 etags-table.el。,cd /.emacs.d/lisp curl -O http:/bitbucket.org/sakito/dot.emacs.d/raw/tip/local-lisp/etags-table.el,安装
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号