【工具篇】source Insight

不多说,阅读代码利器。

一、修改背景颜色

使用淡绿色更护眼(听说而已),菜单“选项”>>“属性”,使用自己喜欢的颜色吧。我的淡绿色RGB是181,236,207

二、行号,空格替换tabs,智能换行

三、解决source insight 中文间距的方法

默认情况下,往Source Insight里输入中文,字间距相当的大,要解决这个问题,具体设置如下:

1、Options->Style Properties

2、在左边Style Name下找到Comment Multi Line和Comment.在其右边对应的Font属性框下的Font Name中选“Pick...” 设置为宋体、常规、小四。确定,退回Style Properties界面,Size设为10。最后设置Clolors框下Foreground,点“Pick...”选择一种自己喜欢的颜色就OK了。

四、解决backspace、Delet、上下左右键等中文乱码问题

默认情况下,要按两下删除键才能删除一个中文,按一下的话,会有乱码。解决的方法是,在preject打开Base工程,打开文件Utils.em,把下面的代码拷到后面。并在options->Key Assignment为几个macro分配键。

/*======================================================================

1、BackSpace后退键

======================================================================*/

macro SuperBackspace()

{

hwnd = GetCurrentWnd();

hbuf = GetCurrentBuf();

if (hbuf == 0)

stop;   // empty buffer

// get current cursor postion

ipos = GetWndSelIchFirst(hwnd);

// get current line number

ln = GetBufLnCur(hbuf);

if ((GetBufSelText(hbuf) != "") || (GetWndSelLnFirst(hwnd) != GetWndSelLnLast(hwnd))) {

// sth. was selected, del selection

SetBufSelText(hbuf, " ");  // stupid & buggy sourceinsight :(

// del the " "

SuperBackspace(1);

stop;

}

// copy current line

text = GetBufLine(hbuf, ln);

// get string length

len = strlen(text);

// if the cursor is at the start of line, combine with prev line

if (ipos == 0 || len == 0) {

if (ln <= 0)

stop;   // top of file

ln = ln - 1;    // do not use "ln--" for compatibility with older versions

prevline = GetBufLine(hbuf, ln);

prevlen = strlen(prevline);

// combine two lines

text = cat(prevline, text);

// del two lines

DelBufLine(hbuf, ln);

DelBufLine(hbuf, ln);

// insert the combined one

InsBufLine(hbuf, ln, text);

// set the cursor position

SetBufIns(hbuf, ln, prevlen);

stop;

}

num = 1; // del one char

if (ipos >= 1) {

// process Chinese character

i = ipos;

count = 0;

while (AsciiFromChar(text[i - 1]) >= 160) {

i = i - 1;

count = count + 1;

if (i == 0)

break;

}

if (count > 0) {

// I think it might be a two-byte character

num = 2;

// This idiot does not support mod and bitwise operators

if ((count / 2 * 2 != count) && (ipos < len))

ipos = ipos + 1;    // adjust cursor position

}

}

// keeping safe

if (ipos - num < 0)

num = ipos;

// del char(s)

text = cat(strmid(text, 0, ipos - num), strmid(text, ipos, len));

DelBufLine(hbuf, ln);

InsBufLine(hbuf, ln, text);

SetBufIns(hbuf, ln, ipos - num);

stop;

}

/*======================================================================

2、删除键——SuperDelete.em

======================================================================*/

macro SuperDelete()

{

hwnd = GetCurrentWnd();

hbuf = GetCurrentBuf();

if (hbuf == 0)

stop;   // empty buffer

// get current cursor postion

ipos = GetWndSelIchFirst(hwnd);

// get current line number

ln = GetBufLnCur(hbuf);

if ((GetBufSelText(hbuf) != "") || (GetWndSelLnFirst(hwnd) != GetWndSelLnLast(hwnd))) {

// sth. was selected, del selection

SetBufSelText(hbuf, " "); // stupid & buggy sourceinsight :(

// del the " "

SuperDelete(1);

stop;

}

// copy current line

text = GetBufLine(hbuf, ln);

// get string length

len = strlen(text);

if (ipos == len || len == 0) {

totalLn = GetBufLineCount (hbuf);

lastText = GetBufLine(hBuf, totalLn-1);

lastLen = strlen(lastText);

if (ipos == lastLen)// end of file

stop;

ln = ln + 1;    // do not use "ln--" for compatibility with older versions

nextline = GetBufLine(hbuf, ln);

nextlen = strlen(nextline);

// combine two lines

text = cat(text, nextline);

// del two lines

DelBufLine(hbuf, ln-1);

DelBufLine(hbuf, ln-1);

// insert the combined one

InsBufLine(hbuf, ln-1, text);

// set the cursor position

SetBufIns(hbuf, ln-1, len);

stop;

}

num = 1; // del one char

if (ipos > 0) {

// process Chinese character

i = ipos;

count = 0;

while (AsciiFromChar(text[i-1]) >= 160) {

i = i - 1;

count = count + 1;

if (i == 0)

break;

}

if (count > 0) {

// I think it might be a two-byte character

num = 2;

// This idiot does not support mod and bitwise operators

if (((count / 2 * 2 != count) || count == 0) && (ipos < len-1))

ipos = ipos + 1;    // adjust cursor position

}

// keeping safe

if (ipos - num < 0)

num = ipos;

}

else {

i = ipos;

count = 0;

while(AsciiFromChar(text[i]) >= 160) {

i = i + 1;

count = count + 1;

if(i == len-1)

break;

}

if(count > 0) {

num = 2;

}

}

text = cat(strmid(text, 0, ipos), strmid(text, ipos+num, len));

DelBufLine(hbuf, ln);

InsBufLine(hbuf, ln, text);

SetBufIns(hbuf, ln, ipos);

stop;

}

/*======================================================================

3、左移键——SuperCursorLeft.em

======================================================================*/

macro IsComplexCharacter()

{

hwnd = GetCurrentWnd();

hbuf = GetCurrentBuf();

if (hbuf == 0)

return 0;

//当前位置

pos = GetWndSelIchFirst(hwnd);

//当前行数

ln = GetBufLnCur(hbuf);

//得到当前行

text = GetBufLine(hbuf, ln);

//得到当前行长度

len = strlen(text);

//从头计算汉字字符的个数

if(pos > 0)

{

i=pos;

count=0;

while(AsciiFromChar(text[i-1]) >= 160)

{

i = i - 1;

count = count+1;

if(i == 0)

break;

}

if((count/2)*2==count|| count==0)

return 0;

else

return 1;

}

return 0;

}

macro moveleft()

{

hwnd = GetCurrentWnd();

hbuf = GetCurrentBuf();

if (hbuf == 0)

stop;   // empty buffer

ln = GetBufLnCur(hbuf);

ipos = GetWndSelIchFirst(hwnd);

if(GetBufSelText(hbuf) != "" || (ipos == 0 && ln == 0))   // 第0行或者是选中文字,则不移动

{

SetBufIns(hbuf, ln, ipos);

stop;

}

if(ipos == 0)

{

preLine = GetBufLine(hbuf, ln-1);

SetBufIns(hBuf, ln-1, strlen(preLine)-1);

}

else

{

SetBufIns(hBuf, ln, ipos-1);

}

}

macro SuperCursorLeft()

{

moveleft();

if(IsComplexCharacter())

moveleft();

}

/*======================================================================

4、右移键——SuperCursorRight.em

======================================================================*/

macro moveRight()

{

hwnd = GetCurrentWnd();

hbuf = GetCurrentBuf();

if (hbuf == 0)

stop;   // empty buffer

ln = GetBufLnCur(hbuf);

ipos = GetWndSelIchFirst(hwnd);

totalLn = GetBufLineCount(hbuf);

text = GetBufLine(hbuf, ln);

if(GetBufSelText(hbuf) != "")   //选中文字

{

ipos = GetWndSelIchLim(hwnd);

ln = GetWndSelLnLast(hwnd);

SetBufIns(hbuf, ln, ipos);

stop;

}

if(ipos == strlen(text)-1 && ln == totalLn-1) // 末行

stop;

if(ipos == strlen(text))

{

SetBufIns(hBuf, ln+1, 0);

}

else

{

SetBufIns(hBuf, ln, ipos+1);

}

}

macro SuperCursorRight()

{

moveRight();

if(IsComplexCharacter()) // defined in SuperCursorLeft.em

moveRight();

}

/*======================================================================

5、shift+右移键——ShiftCursorRight.em

======================================================================*/

macro IsShiftRightComplexCharacter()

{

hwnd = GetCurrentWnd();

hbuf = GetCurrentBuf();

if (hbuf == 0)

return 0;

selRec = GetWndSel(hwnd);

pos = selRec.ichLim;

ln = selRec.lnLast;

text = GetBufLine(hbuf, ln);

len = strlen(text);

if(len == 0 || len < pos)

return 1;

//Msg("@[email protected];@[email protected];");

if(pos > 0)

{

i=pos;

count=0;

while(AsciiFromChar(text[i-1]) >= 160)

{

i = i - 1;

count = count+1;

if(i == 0)

break;

}

if((count/2)*2==count|| count==0)

return 0;

else

return 1;

}

return 0;

}

macro shiftMoveRight()

{

hwnd = GetCurrentWnd();

hbuf = GetCurrentBuf();

if (hbuf == 0)

stop;

ln = GetBufLnCur(hbuf);

ipos = GetWndSelIchFirst(hwnd);

totalLn = GetBufLineCount(hbuf);

text = GetBufLine(hbuf, ln);

selRec = GetWndSel(hwnd);

curLen = GetBufLineLength(hbuf, selRec.lnLast);

if(selRec.ichLim == curLen+1 || curLen == 0)

{

if(selRec.lnLast == totalLn -1)

stop;

selRec.lnLast = selRec.lnLast + 1;

selRec.ichLim = 1;

SetWndSel(hwnd, selRec);

if(IsShiftRightComplexCharacter())

shiftMoveRight();

stop;

}

selRec.ichLim = selRec.ichLim+1;

SetWndSel(hwnd, selRec);

}

macro SuperShiftCursorRight()

{

if(IsComplexCharacter())

SuperCursorRight();

shiftMoveRight();

if(IsShiftRightComplexCharacter())

shiftMoveRight();

}

/*======================================================================

6、shift+左移键——ShiftCursorLeft.em

======================================================================*/

macro IsShiftLeftComplexCharacter()

{

hwnd = GetCurrentWnd();

hbuf = GetCurrentBuf();

if (hbuf == 0)

return 0;

selRec = GetWndSel(hwnd);

pos = selRec.ichFirst;

ln = selRec.lnFirst;

text = GetBufLine(hbuf, ln);

len = strlen(text);

if(len == 0 || len < pos)

return 1;

//Msg("@[email protected];@[email protected];");

if(pos > 0)

{

i=pos;

count=0;

while(AsciiFromChar(text[i-1]) >= 160)

{

i = i - 1;

count = count+1;

if(i == 0)

break;

}

if((count/2)*2==count|| count==0)

return 0;

else

return 1;

}

return 0;

}

macro shiftMoveLeft()

{

hwnd = GetCurrentWnd();

hbuf = GetCurrentBuf();

if (hbuf == 0)

stop;

ln = GetBufLnCur(hbuf);

ipos = GetWndSelIchFirst(hwnd);

totalLn = GetBufLineCount(hbuf);

text = GetBufLine(hbuf, ln);

selRec = GetWndSel(hwnd);

//curLen = GetBufLineLength(hbuf, selRec.lnFirst);

//Msg("@[email protected];@[email protected]");

if(selRec.ichFirst == 0)

{

if(selRec.lnFirst == 0)

stop;

selRec.lnFirst = selRec.lnFirst - 1;

selRec.ichFirst = GetBufLineLength(hbuf, selRec.lnFirst)-1;

SetWndSel(hwnd, selRec);

if(IsShiftLeftComplexCharacter())

shiftMoveLeft();

stop;

}

selRec.ichFirst = selRec.ichFirst-1;

SetWndSel(hwnd, selRec);

}

macro SuperShiftCursorLeft()

{

if(IsComplexCharacter())

SuperCursorLeft();

shiftMoveLeft();

if(IsShiftLeftComplexCharacter())

shiftMoveLeft();

}

/*---END---*/

【工具篇】source Insight

时间: 2024-10-07 16:46:03

【工具篇】source Insight的相关文章

(工具)source insight高速增加时间代码

这篇文章是程序代码更改由其他用户. 不是原厂原装,例如下列总结,使用作为个人笔记. (1)打开projectbase.打开文件Utils.em,插入下面代码: //插入时间 macro MonthToName(MonthNum) { if (MonthNum== 1) return "01" if (MonthNum== 2) return "02" if (MonthNum== 3) return "03" if (MonthNum== 4)

Source Insight 插件

一提到外挂程序,大家肯定都不陌生,QQ就有很多个版本的去广告外挂,很多游戏也有用于扩展功能或者作弊的工具,其中很多也是以外挂的形式提供的.外挂和插件的区别在于插件通常依赖于程序的支持,如果程序不支持插件机制,那么就无法为其开发插件,而外挂则不然,它不依赖于程序本身的功能,通常是一个单独运行的程序,“挂”其它程序的方法就是跨进程代码注入.如果这个世界的所有软件都是开放源代码的,而且没有那么多的License限制,黑客们可以自由修改代码发布新功能,那么就不会出现外挂这东西.给别的程序做外挂是一件很麻

Source Insight 源代码查看工具

在开发的过程中,有时候我们需要研究源代码,查看源码是一个好的习惯,能帮我们学到很多的东西,比如JDK可以帮助我们理解很多设计模式在实际开发中的应用,又或者android开发者,源代码更是必不可少的,当我们看代码的时候总会有各种各样不方便的地方,今天就和大家分享一个Windows平台下,查看源代码文件的利器,最初听说还是从张凌华老师那里,使用之后就爱上这个工具了. 今天的主角就是Source Insight.它是一个面向项目开发的程序编辑器和代码浏览器.Source Insight能分析你的源代码

Source Insight 中使用 AStyle 代码格式工具

Source Insight 中使用 AStyle 代码格式工具 彭会锋 2015-05-19 23:26:32     Source Insight是较好的代码阅读和编辑工具,不过source insight没有集成代码格式化工具:GNU的astyle是一个较好的免费的代码格式化工具,经过它的格式化之后,代码排版会变得很漂亮:Astyle主要作为插件供其他程序调用,具体的使用方法如下: 1 astyle下载地址: http://sourceforge.net/projects/astyle/

Source insight添加工具自动排版

当在网上找了一些别人的程序拿来学习,用Source insight来看时,会不会因为代码太乱看了义愤填膺呢? 有很多集成的开发环境可以自动排版,但source insight却不行!不过,有工具和配置,可以帮助完成这个事情: 1,下载astyle工具:http://download.csdn.net/detail/taixinlfx/43067302,打开你的SourceInsight, 选择菜单"Options-->Custom Commands-->Add", 输入Ar

源码解读之工具--Source Insight

1.Source Insight 这个工具又叫做程序编辑器和代码浏览器,支持C/C++.C#.java等的分析,是一款功能强大的处理大型项目所需的软件,是一个程序员的必备软件: 针对Linux内核的剖析,是几百M大的文件,上百万行的代码,从中快速的浏览,找到你所需要的函数.变量名称,代码的追踪都是很好的,此时不可能一行一行的查找代码,所以就有了这个需求,这款软件就是解决这个问题的. 在工程项目中,它的作用是巨大的,针对几百.上千行的代码没有必要使用这个软件,现在针对的是Linux内核,工欲善其事

source insight——编码工具中的一朵奇葩

source insight是一款非常优秀的源代码编辑/浏览软件.本文从以下几个方面随便说说他的优秀之处. 逻辑上可能有点乱,表述上也可能有不准确的地方.另外,也难以将source insight的好处说全. 一.圆满的设计+圆满的实现 这是对此软件的总体评论. 从source insight官方网站(http://www.sourceinsight.com/)上可以看到, 目前此软件的最新版本是 3.5.0072,编译日期为2013年3月19日.至此,3.5版本至少已经维护了10年以上. 在十

使用source Insight工具创建uboot工程。

首先在linux下面解压uboot的代码.不能在Windows下面解压,因为Windows的文件名是不区分大小写的. 然后,创建网络驱动器,这样就能在Windows下访问linux的文件夹了.方法:通过smb打开源码目录,把路径记录下来,进行网络驱动映射. ------------------------------------------ 使用source Insight创建工程. Project --> new Project ---->工程文件,单独建立一个目录来管理工程文件,-----

【常用软件】木木的常用软件点评(2)------VC程序员常用工具篇

摘自:http://blog.csdn.net/liquanhai/article/details/7215045 木木的常用软件点评(2)------VC程序员常用工具篇 分类: VC++经验总结2012-01-25 14:02 14091人阅读 评论(56) 收藏 举报 工具tortoisesvn文本编辑html加密 过年了,事情可以暂时放一下了.总结一下很有必要.又看到外面饭馆写着“岁末收工,初六开炉“了.好了,废话不多说,接着上篇继续评点程序员常用工具.当然还得请朋友们留言,好做继续的整