Source Insight Marco研究.doc_第1页
Source Insight Marco研究.doc_第2页
Source Insight Marco研究.doc_第3页
Source Insight Marco研究.doc_第4页
Source Insight Marco研究.doc_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Source Insight Marco研究(语法篇)Source Insight Marco研究(语法篇) Source Insight宏语法与C相似,编写好的宏以.em文件存储。要使用宏先需要把.em文件加入到当前工程或是Base工程中,然后为其分配一个快捷键或是菜单项,之后就可以使用键盘或是点击菜单来调用宏。si的宏语法“不是”大小写敏感的,且每行语句不强制要求以分号结束,语法元素之间的空格将被自动忽略,变量名必须以字母开头。1. 宏定义方法如下,可以传递参数,可以有返回值,但和一些脚本语言一样,在si宏中没有数据类型一说。macro my_macro(a, b, c).return a+b+c2. 以下代码展示了si宏的控制语句,学过C语言的人都可以很快上手。while (条件)if (条件).breakelsecontinuereturn 03. 以下代码展示了变量的定义macro SomeFunction()var localx/定义局部变量,局部变量可以不定义而直接使用global globalvariables;/定义全局变量localx = 1;/局部变量赋值,作用域是当前macroglobalvariables = ison81/全局变量赋值,作用域是整个si,其它macro也可以访问4. 以下代码展示了关于变量和数据类型的一些注意事项,a. 空串S = nil / s is set to the empty stringS = / same as nilb. 在变量中展开字符串,使用.S = “Hey, username, dont break the build again!”c. 字符串当成数字来运算s = 1x = s + 2/ x now contains the string 3y = 2 * x + 5 / x now contains 11但这样就是错的,s = hellox = s + 1 / error如果要灵活,可以先检测一个字符串是不是数字,if (IsNumber(x)x = x / 4/ okay to do arithmeticd. 引用字符串中的字符,s = abcx = s0/ x now contains the string asi的字符串也是zero-terminated,s = abclength = strlen(s)ch = slength / ch now contains the empty stringif (ch = )msg End of string.5. 关于结构体定义Rec = nil/ initializes as an empty stringR = “Joe Smith”Rec.age = “34”Rec.experience = “guru”另一种定义方法,rec = “name=”Joe Smith”;age=”34”;experience=”guru”引用结构体Filename = slr.file/ get file field of slrLineNumber = slr.lnFirst/ get lnFirst field of slr6. 关于数组si宏并没有提供数组的概念,数组是通过buf来模拟实现的,关于buf还是在介绍macro API时再讨论。7. 运算符.加减乘除(+, -, *, /).逻辑(&, |, !).自增自减(+, -),可前可后.算术比较(, =, Perferences菜单里,1、GeneralProject File Synchronization-Remove missing file fromproject选上可以避免因文件找不到而弹出错误对话框。把Misc-Use stricter confirmation dialog选项去掉可以使确认时不输入yes。2、TypingSource Editing-Indent commands affect #-preprocessor statements。去掉后(默认值),进行多行缩进时不会影响预处理语句(如#if.#endif)。Auto Completion-Use detailed completion window,选上后,联想时可以出现该函数的详细信息。见下图:(简单)(详细)Auto Completion-Insert paremeters for functions,去掉后,自动联想不会把整个参数都输出到当前行。Browsing in Lists-Match syllables while typing(slower)。在symbol list框检索符号时是否采用音节匹配方式,如对于函数FindNext,输入find或者next都可以找到该函数。该功能可能导致反应缓慢(视工程和机器配置而定),建议关闭,因为即使在关闭状态下也可以通过先输入空格再输入单词来动态启用该功能。注意Browsing in Lists里其实有两个功能,但一般我们只能看到Match syllables while typing这一条,应该是si的菜单设计没有做好,导致在中文windows下不能显示全,另一个功能是Match members while typing,用于打开/关闭按成员变量名来检索类/结构体的功能。3、FilesOpening Files-Sharing: Let other programs modify files,以共享方式打开文件,这个很重要,保证可以在其它编辑中同时编辑该文件。典型的场景就是用ide环境去动态编译调试,而用si静态阅读。Customize Open Command.,用于设置Ctrl+O打开的页面,默认选项是 Project File list viewin Project Window,建议保持默认。Saving Files-Preserve Undo data and revision marks after saving,如果发现保存后就不能undo了,请检查该选项是否选中。Remove extra white space when saving。保存时自动去除每行尾部的空格和tab。建议选中。4、Languages自定义其它编程语言的语法解析,这个.还是另写一篇来讲吧。Conditional Parsing不要错过了,这里的Conditions功能实在让人喜欢。Conditions是什么意思呢?我们的代码中一般都会有一些开关宏,通过在Conditions中配置这些宏的默认值,可以让si把配置为不开启的宏视为无效代码,从而不进行符号检索。如果源代码中的开关宏太多,还可以使用Condition Parsing中的Scan Files来自动找出所有开关宏。5、Symbol Lookups没太多特别的。6、Display显示配置和个人喜好和显示器的状态有关,偶用的x60小本,屏幕资源有限,所以在Display Elements里把Project Window, Status Bar, Tool Bar,Clip Window都关了,基本用快捷键可以代替它们。Options-Horizontal scroll bars for each new window。很多大师都教导我们说一行不要写太多代码。在这个指导思想下,我们不需要这个东东。Show exact case of file names。如果看不惯si把所有的文件名首字母都大写就勾上这个选项吧。Tile source and destination windows for Source Link commands。Source Link很多时候用于外部命令输出结果的解析(如Make, lint),这个功能会把解析结果与目标窗口自动tile,很实用。Trim long path names with ellipses。这个建议不要选中。事实上这个主要影响标题栏,但一般来说标题栏上的空间是充裕的,选上之后往往会令我们不知道所编辑文件的具体位置。7、Color这个不用多说了。自己怎么喜欢怎么配吧。8、Syntax Formatting如果让大家说出喜欢si的几个理由,我想语法着色一定会是其中之一。Basics-Use only color formatting。只启用style中关于颜色的设置。其它如粗体、斜体、阴影等都不启用。Apply Styles for Lanugage Elements。把分类启用style,都选上吧。Symbol Reference Lookups-Qualify references to members。检测成员的有效性,如果不是类/结构体中的一部分,则不启用style。虽然可能导致性能降低,但还是建议打开。同样Qualify referencesto functions也是。这里有个按钮可以进入Doc Types页面(Options菜单也可以进入),里面有很多重要选项:Editing Options中,Expand tabs, Visible tabs可以帮助我们发现并转换tab。Show right margint和Margin width可以提醒我们是否把一行写得太长。Symbol Window选项建议关闭(因为有快捷键)。Auto Indent对话框中,如果没有特别喜好,建议把Smart Indent Options的两个勾都去掉。同时Auto Indent Type选Smart。9、Syntax Decorations可以把一些符号转换成特殊形式显示,如-转换成。如果要使用该功能,不能开启Syntax Formatting-Basics-Use only color formatting。Auto annotations下的三个功能都比较有用,Show arrows at goto statements可以在goto时显示一个向上或向下的箭头,表示是向上goto还是向下goto。不过我们还是尽量不要用goto了。Annotate closing braces with end-statement。在后显示标识,表示该与哪个if/switch配对。而下面的Annotate closing braces only for long blocks则是一个补充选项,表示只在较长的语句块时才显示标识。10、Searching没什么特别的,注意Automatically load selection into Findpattern。11、Remote与远程登录相关的一些选项。可以提高远程使用的显示性能。12、Folders没什么特别的。最后简单说下si的配置文件。可以通过Options-Load Configuration/Save Configuration来导入/导出配置,可以导出全部,也可以导出某几个部分(如style)。si的配置有两级,一是全局配置,一是项目配置。出入方便考虑,统一一个配置就好了,在创建项目时选择用全局配置(默认值)。导入配置也可以通过双击配置文件来完成。21:57|固定链接|source insight3月10日(转)Source Insight使用技巧/url/1304282/1、背景色选择要改变背景色Options-preference-windows background-color设置背景色2、解决字符等宽对齐问题。SIS默认字体是VERDANA,很漂亮。这网页上应该也是用的VERDANA字体。但由于美观的缘故,VERDANA字体是不等宽的。比如下面两行llllllllllMMMMMMMMMM同样10个字符,长度差多了.用VERDANA来看程序,有些本应该对齐的就歪了。解放方法是使用等宽的字体,但肯定比较丑。比较推荐的是用Courier New。3、解决TAB键缩进问题Options- Document Options里面的右下角Editing Options栏里,把Expand tabs勾起来,然后确定。OK,现在TAB键的缩进和四个空格的缩进在SIS里面看起来就对齐咯4、SI中的自动对齐设置:在C程序里, 如果遇到行末没有分号的语句,如IF, WHILE, SWITCH等, 写到该行末按回车,则新行自动相对上一行缩进两列。Option-Document option下的Auto Indient中Auto Indient Type有三种类型 None,Simple,Smart。个人推荐选用Simple类型。5、向项目中添加文件时,只添加特定类型的文件(文件类型过滤器)编辑汇编代码时,在SIS里建立PROJECT并ADD TREE的时候,根据默认设置并不会把该TREE里面所有汇编文件都包含进来只加了.inc和.asm后缀的,.s后缀的没有。而且用SIS打开.s的文件,一片黑白没有色彩,感觉回到DOS的EDIT时代了解决方法是在Options-Document Options里面,点左上的Document Type下拉菜单,选择x86 Asm Source File,然后在右边的File filter里*.asm;*.inc;的后面加上*.s;接着CLOSE就可以了。上面问题解决了,但注意加入*.s后还需要重新ADD TREE一遍才能把这些汇编加到PROJECT里面。6、添加文件类型用户可以定义自己的类型,Options-Document Options-add type,定义文件类型名以及文件名后缀。勾选include when adding to projects在添加目录下文件到工程是该类文件就会添加进SI的工程。如果需要将所有文件添加进SI的工程,可以定义一种文件类型*.*。7、恢复ctrl+a的全选功能通过关键词save 找到save all,更改为ctrl+shift+a,通过关键词select找到select all,更改为ctrl +aSource Insight常用的快捷键:Ctrl+=:Jump to definitionAlt+/ :Look up referenceF3 : search backwardF4 : search forwardF5: go to LineF7 :Look up symbolsF8 :Look up local symbolsF9 :Ident leftF10 :Ident rightAlt+, :Jump backwordAlt+. : Jump forwardShift+F3 : search the word under cusor backwardShift+F4 : search the word under cusor forwardF12 : incrementalsearchShift+Ctrl+f: search in projectshift+F8 : hilight wordSource Insight的窗口操作:project window Ctrl+O打开symbol window Alt+F8打开和关闭Contex Window 自定义键打开和关闭Relation Window 自定义键打开先锁定再刷新联系在Source Insight中添加自定义功能的步骤如下:1.Source Insight中,Options-Custom Commands.-Add.,New Command name 随便写,我的是Edit with Vim2.Run中写入: C:Program FilesVimvim63gvim.exe -remote-silent +%l %f意思是在当前已经打开的gvim窗口里面打开当前的文件,并且跳转到指定行%l为当前的行号,%f为文件名使用 -remote-silent 的作用是,如果已经打开了对应文件,就不会打开第二次,而是在已经打开的文件里跳转到对应行3.还是同一个对话框里面,选择Keys-Assign New Key.-按F12,如果你已经将F12设置给其他命令,选择其他的按键就行了下面是一些常用自定义功能:( CUSTOM COMMANDS )打开资源管理器并选中当前文件ShellExecute open explorer /e,/select,%f查看logC:Program FilesTortoiseSVNbinTortoiseProc.exe /command:log /path:%f /notempfile /closeonenddiffC:Program FilesTortoiseSVNbinTortoiseProc.exe /command:diff /path:%f /notempfile /closeonend取得锁定(check out)C:Program FilesTortoiseSVNbinTortoiseProc.exe /command:lock /path:%f /notempfile /closeonend提交(check in)C:Program FilesTortoiseSVNbinTortoiseProc.exe /command:commit /path:%f /notempfile /closeonend更新(update)C:Program FilesTortoiseSVNbinTortoiseProc.exe /command:update /path:%f /notempfile /closeonend更新整个目录(update all)C:Program FilesTortoiseSVNbinTortoiseProc.exe /command:update /path:*.* /notempfile /closeonend取消锁定(undo check out)C:Program FilesTortoiseSVNbinTortoiseProc.exe /command:revert /path:%f /notempfile /closeonend在ultriEdit中编辑C:Program FilesUltraEdit-32/uedit32 %f在vim中编辑并定位到当前行C:Program FilesVimvim63gvim.exe -remote-silent +%l %f汇总其他小技巧:让 和 不缩进:Options-Document Options-Auto Indent-Indent Open Brace/Indent Close Bracehao space: SourceInsight 小技巧1、按住ctrl, 再用鼠标指向某个变量,点击一下,就能进入这个变量的定义。2、今天把一个用sourceinsight排版整齐的C文件,偶然用VC打开一看,全乱了。研究了半天,发现SI对每个字符的宽度不太一致。请教同事发现选上view - draft view, 就可以让每个字符的宽度一致了。快捷键是 Alt + F123、shift+F8 标亮所有文本中光标所在位置的单词4、跳到某一行:ctrl + gSource Insight是阅读和编写代码的好东东,基本上也算得上是经典之作了,虽然还有一点点小bug,不过对于我们这些C程序员来说可是一旦拥有别无所求。下列小技巧是在工作中同事整理总结的,对提高工作效率多少有点帮助,其中有些是对应于SVN的,没有使用SVN做版本管理的人就不要白费力气了。ShellExecute open explorer /e,/select,%fX:Progra1TortoiseSVNbinTortoiseProc.exe

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论